Merge "docs: add api overview for jb" into jb-dev
diff --git a/api/16.txt b/api/16.txt
index 70c4032..bc97e81 100644
--- a/api/16.txt
+++ b/api/16.txt
@@ -676,6 +676,7 @@
     field public static final int measureAllChildren = 16843018; // 0x101010a
     field public static final int measureWithLargestChild = 16843476; // 0x10102d4
     field public static final int mediaRouteButtonStyle = 16843693; // 0x10103ad
+    field public static final int mediaRouteTypes = 16843694; // 0x10103ae
     field public static final int menuCategory = 16843230; // 0x10101de
     field public static final int mimeType = 16842790; // 0x1010026
     field public static final int minDate = 16843583; // 0x101033f
@@ -3688,6 +3689,8 @@
     ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
     ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
     method public int getRouteTypes();
+    method public void onAttachedToWindow();
+    method public void onDetachedFromWindow();
     method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
     method public void setRouteTypes(int);
     method public void showDialog();
@@ -3759,6 +3762,7 @@
   public static class Notification.BigPictureStyle extends android.app.Notification.Style {
     ctor public Notification.BigPictureStyle();
     ctor public Notification.BigPictureStyle(android.app.Notification.Builder);
+    method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.Bitmap);
     method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
     method public android.app.Notification build();
     method public android.app.Notification.BigPictureStyle setBigContentTitle(java.lang.CharSequence);
@@ -5827,7 +5831,6 @@
     field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
     field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
     field public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
-    field public static final int FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS = 8192; // 0x2000
     field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
     field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
     field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000
@@ -11537,6 +11540,7 @@
     method public abstract void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
     method public abstract void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
     method public abstract void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
+    method public abstract void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
   }
 
   public static class MediaRouter.RouteCategory {
@@ -11564,10 +11568,21 @@
     method public android.graphics.drawable.Drawable getIconDrawable();
     method public java.lang.CharSequence getName();
     method public java.lang.CharSequence getName(android.content.Context);
+    method public int getPlaybackStream();
+    method public int getPlaybackType();
     method public java.lang.CharSequence getStatus();
     method public int getSupportedTypes();
     method public java.lang.Object getTag();
+    method public int getVolume();
+    method public int getVolumeHandling();
+    method public int getVolumeMax();
+    method public void requestSetVolume(int);
+    method public void requestUpdateVolume(int);
     method public void setTag(java.lang.Object);
+    field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
+    field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
+    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
+    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
   }
 
   public static class MediaRouter.SimpleCallback extends android.media.MediaRouter.Callback {
@@ -11579,15 +11594,29 @@
     method public void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
     method public void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
     method public void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
+    method public void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
   }
 
   public static class MediaRouter.UserRouteInfo extends android.media.MediaRouter.RouteInfo {
+    method public android.media.RemoteControlClient getRemoteControlClient();
     method public void setIconDrawable(android.graphics.drawable.Drawable);
     method public void setIconResource(int);
     method public void setName(java.lang.CharSequence);
     method public void setName(int);
+    method public void setPlaybackStream(int);
+    method public void setPlaybackType(int);
     method public void setRemoteControlClient(android.media.RemoteControlClient);
     method public void setStatus(java.lang.CharSequence);
+    method public void setVolume(int);
+    method public void setVolumeCallback(android.media.MediaRouter.VolumeCallback);
+    method public void setVolumeHandling(int);
+    method public void setVolumeMax(int);
+  }
+
+  public static abstract class MediaRouter.VolumeCallback {
+    ctor public MediaRouter.VolumeCallback();
+    method public abstract void onVolumeSetRequest(android.media.MediaRouter.RouteInfo, int);
+    method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int);
   }
 
   public class MediaScannerConnection implements android.content.ServiceConnection {
@@ -22816,10 +22845,18 @@
   public abstract class ActionProvider {
     ctor public ActionProvider(android.content.Context);
     method public boolean hasSubMenu();
+    method public boolean isVisible();
     method public abstract deprecated android.view.View onCreateActionView();
     method public android.view.View onCreateActionView(android.view.MenuItem);
     method public boolean onPerformDefaultAction();
     method public void onPrepareSubMenu(android.view.SubMenu);
+    method public boolean overridesItemVisibility();
+    method public void refreshVisibility();
+    method public void setVisibilityListener(android.view.ActionProvider.VisibilityListener);
+  }
+
+  public static abstract interface ActionProvider.VisibilityListener {
+    method public abstract void onActionProviderVisibilityChanged(boolean);
   }
 
   public final class Choreographer {
@@ -28146,8 +28183,11 @@
     method public void setString(int, java.lang.String, java.lang.String);
     method public void setTextColor(int, int);
     method public void setTextViewCompoundDrawables(int, int, int, int, int);
+    method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
     method public void setTextViewText(int, java.lang.CharSequence);
+    method public void setTextViewTextSize(int, int, float);
     method public void setUri(int, java.lang.String, android.net.Uri);
+    method public void setViewPadding(int, int, int, int, int);
     method public void setViewVisibility(int, int);
     method public void showNext(int);
     method public void showPrevious(int);
diff --git a/api/current.txt b/api/current.txt
index f5cced9..bc97e81 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -3689,6 +3689,8 @@
     ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
     ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
     method public int getRouteTypes();
+    method public void onAttachedToWindow();
+    method public void onDetachedFromWindow();
     method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
     method public void setRouteTypes(int);
     method public void showDialog();
@@ -5829,7 +5831,6 @@
     field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
     field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
     field public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
-    field public static final int FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS = 8192; // 0x2000
     field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
     field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
     field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 2ed93f4..e12fa19 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1617,6 +1617,16 @@
             return true;
         }
 
+        case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: {
+            data.enforceInterface(IActivityManager.descriptor);
+            IIntentSender r = IIntentSender.Stub.asInterface(
+                data.readStrongBinder());
+            boolean res = isIntentSenderAnActivity(r);
+            reply.writeNoException();
+            reply.writeInt(res ? 1 : 0);
+            return true;
+        }
+
         case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: {
             data.enforceInterface(IActivityManager.descriptor);
             Configuration config = Configuration.CREATOR.createFromParcel(data);
@@ -3753,6 +3763,19 @@
         return res;
     }
 
+    public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException {
+        Parcel data = Parcel.obtain();
+        Parcel reply = Parcel.obtain();
+        data.writeInterfaceToken(IActivityManager.descriptor);
+        data.writeStrongBinder(sender.asBinder());
+        mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0);
+        reply.readException();
+        boolean res = reply.readInt() != 0;
+        data.recycle();
+        reply.recycle();
+        return res;
+    }
+
     public void updatePersistentConfiguration(Configuration values) throws RemoteException
     {
         Parcel data = Parcel.obtain();
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 609a047..031e39b 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -338,6 +338,8 @@
 
     public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException;
 
+    public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException;
+
     public void updatePersistentConfiguration(Configuration values) throws RemoteException;
 
     public long[] getProcessPss(int[] pids) throws RemoteException;
@@ -603,4 +605,5 @@
     int FINISH_ACTIVITY_AFFINITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+148;
     int GET_LAUNCHED_FROM_UID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+149;
     int UNSTABLE_PROVIDER_DIED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+150;
+    int IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+151;
 }
diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java
index aa366b6..8adc8a2 100644
--- a/core/java/android/app/PendingIntent.java
+++ b/core/java/android/app/PendingIntent.java
@@ -631,6 +631,20 @@
     }
 
     /**
+     * @hide
+     * Check whether this PendingIntent will launch an Activity.
+     */
+    public boolean isActivity() {
+        try {
+            return ActivityManagerNative.getDefault()
+                .isIntentSenderAnActivity(mTarget);
+        } catch (RemoteException e) {
+            // Should never happen.
+            return false;
+        }
+    }
+
+    /**
      * Comparison operator on two PendingIntent objects, such that true
      * is returned then they both represent the same operation from the
      * same package.  This allows you to use {@link #getActivity},
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 76dfac4..3fdf451 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -3105,17 +3105,6 @@
      */
     public static final int FLAG_ACTIVITY_TASK_ON_HOME = 0X00004000;
     /**
-     * If set in an Intent passed to {@link Context#startActivity Context.startActivity()},
-     * upon starting the activity the system will also clear any system dialogs that
-     * are currently shown.  This is intended primarily for any actions that are
-     * associated with buttons in a notification: tapping on the button to launch
-     * the activity needs to also dismiss the notification window (which is one
-     * of the system dialogs); setting this flag on the Intent associated with that
-     * action will ensure that and other system dialogs are dismissed so that the
-     * user arrives in the new activity.
-     */
-    public static final int FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS = 0X00002000;
-    /**
      * If set, when sending a broadcast only registered receivers will be
      * called -- no BroadcastReceiver components will be launched.
      */
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index beb87cd..e29000d 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -125,7 +125,10 @@
      * setting on click extras and setting on click pending intents. The former is enabled,
      * and the latter disabled when this flag is true.
      */
-     private boolean mIsWidgetCollectionChild = false;
+    private boolean mIsWidgetCollectionChild = false;
+
+    private static final OnClickHandler DEFAULT_ON_CLICK_HANDLER = new OnClickHandler();
+    private OnClickHandler mOnClickHandler = DEFAULT_ON_CLICK_HANDLER;
 
     /**
      * This annotation indicates that a subclass of View is alllowed to be used
@@ -149,29 +152,9 @@
         }
     }
 
-    /**
-     * Base class for all actions that can be performed on an 
-     * inflated view.
-     *
-     *  SUBCLASSES MUST BE IMMUTABLE SO CLONE WORKS!!!!!
-     */
-    private abstract static class Action implements Parcelable {
-        public abstract void apply(View root, ViewGroup rootParent) throws ActionException;
-
-        public int describeContents() {
-            return 0;
-        }
-
-        /**
-         * Overridden by each class to report on it's own memory usage
-         */
-        public void updateMemoryUsageEstimate(MemoryUsageCounter counter) {
-            // We currently only calculate Bitmap memory usage, so by default, don't do anything
-            // here
-            return;
-        }
-
-        protected boolean startIntentSafely(View view, PendingIntent pendingIntent,
+    /** @hide */
+    public static class OnClickHandler {
+        public boolean onClickHandler(View view, PendingIntent pendingIntent,
                 Intent fillInIntent) {
             try {
                 // TODO: Unregister this handler if PendingIntent.FLAG_ONE_SHOT?
@@ -193,6 +176,30 @@
             }
             return true;
         }
+    }
+
+    /**
+     * Base class for all actions that can be performed on an
+     * inflated view.
+     *
+     *  SUBCLASSES MUST BE IMMUTABLE SO CLONE WORKS!!!!!
+     */
+    private abstract static class Action implements Parcelable {
+        public abstract void apply(RemoteViews owner, View root,
+                ViewGroup rootParent) throws ActionException;
+
+        public int describeContents() {
+            return 0;
+        }
+
+        /**
+         * Overridden by each class to report on it's own memory usage
+         */
+        public void updateMemoryUsageEstimate(MemoryUsageCounter counter) {
+            // We currently only calculate Bitmap memory usage, so by default, don't do anything
+            // here
+            return;
+        }
 
         public void setBitmapCache(BitmapCache bitmapCache) {
             // Do nothing
@@ -222,7 +229,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View view = root.findViewById(viewId);
             if (!(view instanceof AdapterView<?>)) return;
 
@@ -253,7 +260,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View target = root.findViewById(viewId);
             if (target == null) return;
 
@@ -265,6 +272,7 @@
             if (target == root) {
                 target.setTagInternal(com.android.internal.R.id.fillInIntent, fillInIntent);
             } else if (target != null && fillInIntent != null) {
+                final OnClickHandler clicker = owner.mOnClickHandler;
                 OnClickListener listener = new OnClickListener() {
                     public void onClick(View v) {
                         // Insure that this view is a child of an AdapterView
@@ -302,7 +310,7 @@
                         rect.bottom = (int) ((pos[1] + v.getHeight()) * appScale + 0.5f);
 
                         fillInIntent.setSourceBounds(rect);
-                        startIntentSafely(v, pendingIntent, fillInIntent);
+                        clicker.onClickHandler(v, pendingIntent, fillInIntent);
                     }
 
                 };
@@ -334,13 +342,14 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View target = root.findViewById(viewId);
             if (target == null) return;
 
             // If the view isn't an AdapterView, setting a PendingIntent template doesn't make sense
             if (target instanceof AdapterView<?>) {
                 AdapterView<?> av = (AdapterView<?>) target;
+                final OnClickHandler clicker = owner.mOnClickHandler;
                 // The PendingIntent template is stored in the view's tag.
                 OnItemClickListener listener = new OnItemClickListener() {
                     public void onItemClick(AdapterView<?> parent, View view,
@@ -380,7 +389,7 @@
 
                             final Intent intent = new Intent();
                             intent.setSourceBounds(rect);
-                            startIntentSafely(view, pendingIntentTemplate, fillInIntent);
+                            clicker.onClickHandler(view, pendingIntentTemplate, fillInIntent);
                         }
                     }
                 };
@@ -417,7 +426,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View target = root.findViewById(viewId);
             if (target == null) return;
 
@@ -485,7 +494,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View target = root.findViewById(viewId);
             if (target == null) return;
 
@@ -506,6 +515,7 @@
 
             if (target != null) {
                 // If the pendingIntent is null, we clear the onClickListener
+                final OnClickHandler clicker = owner.mOnClickHandler;
                 OnClickListener listener = null;
                 if (pendingIntent != null) {
                     listener = new OnClickListener() {
@@ -525,7 +535,7 @@
     
                             final Intent intent = new Intent();
                             intent.setSourceBounds(rect);
-                            startIntentSafely(v, pendingIntent, intent);
+                            clicker.onClickHandler(v, pendingIntent, intent);
                         }
                     };
                 }
@@ -592,7 +602,7 @@
         }
         
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View target = root.findViewById(viewId);
             if (target == null) return;
             
@@ -652,7 +662,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View view = root.findViewById(viewId);
             if (view == null) return;
 
@@ -776,10 +786,11 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) throws ActionException {
+        public void apply(RemoteViews owner, View root,
+                ViewGroup rootParent) throws ActionException {
             ReflectionAction ra = new ReflectionAction(viewId, methodName, ReflectionAction.BITMAP,
                     bitmap);
-            ra.apply(root, rootParent);
+            ra.apply(owner, root, rootParent);
         }
 
         @Override
@@ -995,7 +1006,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final View view = root.findViewById(viewId);
             if (view == null) return;
 
@@ -1097,13 +1108,13 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final Context context = root.getContext();
             final ViewGroup target = (ViewGroup) root.findViewById(viewId);
             if (target == null) return;
             if (nestedViews != null) {
                 // Inflate nested views and add as children
-                target.addView(nestedViews.apply(context, target));
+                target.addView(nestedViews.apply(owner, context, target));
             } else {
                 // Clear all children when nested views omitted
                 target.removeAllViews();
@@ -1164,7 +1175,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final Context context = root.getContext();
             final TextView target = (TextView) root.findViewById(viewId);
             if (target == null) return;
@@ -1206,7 +1217,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final Context context = root.getContext();
             final TextView target = (TextView) root.findViewById(viewId);
             if (target == null) return;
@@ -1250,7 +1261,7 @@
         }
 
         @Override
-        public void apply(View root, ViewGroup rootParent) {
+        public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
             final Context context = root.getContext();
             final View target = root.findViewById(viewId);
             if (target == null) return;
@@ -2088,6 +2099,11 @@
         return this;
     }
 
+    /** @hide */
+    public void setOnClickHandler(OnClickHandler handler) {
+        mOnClickHandler = handler;
+    }
+
     /**
      * Inflates the view hierarchy represented by this object and applies
      * all of the actions.
@@ -2100,6 +2116,10 @@
      * @return The inflated view hierarchy
      */
     public View apply(Context context, ViewGroup parent) {
+        return apply(this, context, parent);
+    }
+
+    View apply(RemoteViews owner, Context context, ViewGroup parent) {
         RemoteViews rvToApply = getRemoteViewsToApply(context);
 
         View result;
@@ -2114,7 +2134,7 @@
 
         result = inflater.inflate(rvToApply.getLayoutId(), parent, false);
 
-        rvToApply.performApply(result, parent);
+        rvToApply.performApply(owner, result, parent);
 
         return result;
     }
@@ -2141,15 +2161,15 @@
         }
 
         prepareContext(context);
-        rvToApply.performApply(v, (ViewGroup) v.getParent());
+        rvToApply.performApply(this, v, (ViewGroup) v.getParent());
     }
 
-    private void performApply(View v, ViewGroup parent) {
+    private void performApply(RemoteViews owner, View v, ViewGroup parent) {
         if (mActions != null) {
             final int count = mActions.size();
             for (int i = 0; i < count; i++) {
                 Action a = mActions.get(i);
-                a.apply(v, parent);
+                a.apply(owner, v, parent);
             }
         }
     }
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 889f86f..e4fc26b 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -272,7 +272,7 @@
     </style>
 
     <style name="TextAppearance.EasyCorrectSuggestion" parent="TextAppearance.Suggestion">
-        <item name="android:textUnderlineColor">#ffC8C8C8</item>
+        <item name="android:textUnderlineColor">#88C8C8C8</item>
     </style>
 
     <style name="TextAppearance.MisspelledSuggestion" parent="TextAppearance.Suggestion">
diff --git a/docs/html/design/media/metrics_diagram.png b/docs/html/design/media/metrics_diagram.png
index 3cdc5e6..5cbe252 100644
--- a/docs/html/design/media/metrics_diagram.png
+++ b/docs/html/design/media/metrics_diagram.png
Binary files differ
diff --git a/docs/html/design/media/switches_switches.png b/docs/html/design/media/switches_switches.png
index 43e2623..120955d 100644
--- a/docs/html/design/media/switches_switches.png
+++ b/docs/html/design/media/switches_switches.png
Binary files differ
diff --git a/docs/html/design/media/typography_sizes.png b/docs/html/design/media/typography_sizes.png
index eda1d99..fe6cdce 100644
--- a/docs/html/design/media/typography_sizes.png
+++ b/docs/html/design/media/typography_sizes.png
Binary files differ
diff --git a/docs/html/guide/google/gcm/adv.jd b/docs/html/guide/google/gcm/adv.jd
new file mode 100644
index 0000000..aec8ca4
--- /dev/null
+++ b/docs/html/guide/google/gcm/adv.jd
@@ -0,0 +1,255 @@
+page.title=GCM Advanced Topics
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Quickview</h2>
+
+<ul>
+<li>Learn more about GCM advanced features.</li>
+</ul>
+
+
+<h2>In this document</h2>
+
+<ol>
+<li><a href="#lifetime">Lifetime of a Message</a></li>
+<li><a href="#throttling">Throttling</a></li>
+<li><a href="#reg-state">Keeping the Registration State in Sync</a>
+  <ol>
+    <li><a href="#canonical">Canonical IDs</a></li>
+  </ol>
+</li>
+<li><a href="#retry">Automatic Retry Using Exponential Back-Off</a></li>
+<li><a href="#unreg">How Unregistration Works</a></li>
+<li><a href="#collapsible">Send-to-Sync vs. Messages with Payload</a>
+  <ol>
+    <li><a href="#s2s">Send-to-sync messages</a></li>
+    <li><a href="#payload">Messages with payload</a></li>
+    </ol>
+</li>
+<li><a href="#ttl">Setting an Expiration Date for a Message</a> </li>
+<li><a href="#throttling"></a><a href="#multi-senders">Receiving Messages from Multiple Senders</a></li>
+</ol>
+
+</div>
+</div>
+<p>This document covers advanced topics for GCM.</p>
+
+
+
+
+<h2 id="msg-lifetime">Lifetime of a Message</h2>
+<p>When a 3rd-party server posts a message to GCM and receives a message ID back, it does not mean that the message was already delivered to the device. Rather, it means that it was accepted for delivery. What happens to the message after it is accepted depends on many factors.</p>
+<p>In the best-case scenario, if the device is connected to GCM, the screen is on, and there are no throttling restrictions (see <a href="#throttling">Throttling</a>), the message will be delivered right away.</p>
+<p>If the device is connected but idle, the message will still be
+delivered right away unless the <code>delay_while_idle</code> flag is set to true. Otherwise, it will be stored in the GCM servers until the device is awake. And that's where the <code>collapse_key</code> flag plays a role: if there is already a message with the same collapse key (and registration ID) stored and waiting for delivery, the old message will be discarded and the new message will take its place (that is, the old message will be collapsed by the new one). However, if the collapse key is not set, both the new and old messages are stored for future delivery.</p>
+
+<p class="note"><strong>Note:</strong> There is a limit on how many messages can be stored without collapsing. That limit is currently 100. If the limit is reached, all stored messages are discarded. Then when the device is back online, it receives a special message indicating that the limit was reached. The application can then handle the situation properly, typically by requesting a full sync.</p>
+
+<p>If the device is not connected to GCM, the message will be stored until a connection is established (again respecting the collapse key rules). When a connection is established, GCM will deliver all pending messages to the device, regardless of the <code>delay_while_idle</code> flag. If the device never gets connected again (for instance, if it was factory reset), the message will eventually time out and be discarded from GCM storage. The default timeout is 4 weeks, unless the <code>time_to_live</code> flag is set.</p>
+
+<p class="note"><strong>Note:</strong> When you set the <code>time_to_live</code> flag, you must also set <code>collapse_key</code>. Otherwise the message will be rejected as a bad request.</p>
+<p>Finally, when GCM attempts to deliver a message to the device and the application was uninstalled, GCM will discard that message right away and invalidate the registration ID. Future attempts to send a message to that device will get a <code>NotRegistered</code> error. See <a href="#unreg">How Unregistration Works</a> for more information.</p>
+<p>Although is not possible to track the status of each individual message, the Google APIs Console stats are broken down by messages sent to device, messages collapsed, and messages waiting for delivery.</p>
+
+<h2 id="throttling">Throttling</h2>
+<p>To prevent abuse (such as sending a flood of messages to a device) and
+to optimize for the overall network efficiency and battery life of
+devices, GCM implements throttling of messages using a token bucket
+scheme. Messages are throttled on a per application and per <a href="#collapsible">collapse
+key</a> basis (including non-collapsible messages). Each application
+collapse key is granted some initial tokens, and new tokens are granted
+periodically therefter. Each token is valid for a single message sent to
+the device. If an application collapse key exhausts its supply of
+available tokens, new messages are buffered in a pending queue until
+new tokens become available at the time of the periodic grant. Thus
+throttling in between periodic grant intervals may add to the latency
+of message delivery for an application collapse key that sends a large
+number of messages within a short period of time. Messages in the pending
+queue of an application collapse key may be delivered before the time
+of the next periodic grant, if they are piggybacked with messages
+belonging to a non-throttled category by GCM for network and battery
+efficiency reasons.</p>
+
+<h2 id="reg-state">Keeping the Registration State in Sync</h2>
+<p>Whenever the application receives a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent with a <code>registration_id</code> extra, it should save the ID for future use, pass it to the 3rd-party server to complete the registration, and keep track of whether the server completed the registration. If the server fails to complete the registration, it should try again or unregister from GCM.</p>
+<p>There are also two other scenarios that require special care:</p>
+<ul>
+  <li>Application update</li>
+  <li>Backup and restore
+  </li>
+</ul>
+<p>When an application is updated, it should invalidate its existing registration ID, as it is not guaranteed to work with the new version.  Because there is no lifecycle method called when the application is updated, the best way to achieve this validation is by storing the current application version when a registration ID is stored. Then when the application is started, compare the stored value with the current application version. If they do not match, invalidate the stored data and start the registration process again.</p>
+
+<p>Similarly, you should not save the registration ID when an application is backed up. This is because the registration ID could become invalid by the time the application is restored, which would put the application in an invalid state  (that is, the application thinks it is registered, but the server and GCM do not store that registration ID anymore&mdash;thus the application will not get more messages).</p>
+<h3 id="canonical">Canonical IDs</h3>
+<p>On the server side, as long as the application is behaving well, everything should work normally. However, if a bug in the application triggers multiple registrations for the same device, it can be hard to reconcile state and you might end up with duplicate messages.</p>
+<p>GCM provides a facility called &quot;canonical registration IDs&quot; to easily recover from these situations. A canonical registration ID is defined to be the ID of the last registration requested by your application. This is the ID that the server should use when sending messages to the device.</p>
+<p>If later on you try to send a message using a different registration ID, GCM will process the request as usual, but it will include the canonical registration ID in the <code>registration_id</code> field of the response. Make sure to replace the registration ID stored in your server with this canonical ID, as eventually the ID you're using will stop working.</p>
+
+<h2 id="retry">Automatic Retry Using Exponential Back-Off</h2>
+
+<p>When the application receives a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent with the <code>error</code> extra set as <code>SERVICE_NOT_AVAILABLE</code>, it should retry the failed operation (register or unregister).</p>
+<p>In the simplest case, if your application just calls <code>register</code> and GCM is not a fundamental part of the application, the application could simply ignore the error and try to register again the next time it starts. Otherwise, it should retry the previous operation using exponential back-off. In exponential back-off, each time there is a failure, it should wait twice the previous amount of time before trying again. If the register (or unregister) operation was synchronous, it could be retried in a simple loop. However, since it is asynchronous, the best approach is to schedule a pending intent to retry the operation. The following steps describe how to implement this in the <code>MyIntentService</code> example used above:</p>
+<ol>
+  <li> Create a random token to verify the origin of the retry intent:
+
+<pre class="prettyprint pretty-java">private static final String TOKEN =
+        Long.toBinaryString(new Random().nextLong());
+</pre>
+
+  <li> Change the <code>handleRegistration()</code> method so it creates the pending intent when appropriate:</li>
+
+<pre class="prettyprint pretty-java">...
+if (error != null) {
+ if ("SERVICE_NOT_AVAILABLE".equals(error)) {
+   long backoffTimeMs = // get back-off time from shared preferences
+   long nextAttempt = SystemClock.elapsedRealtime() + backoffTimeMs;
+   Intent retryIntent = new Intent("com.example.gcm.intent.RETRY");
+   retryIntent.putExtra("token", TOKEN);
+   PendingIntent retryPendingIntent =
+       PendingIntent.getBroadcast(context, 0, retryIntent, 0);
+   AlarmManager am = (AlarmManager)   
+       context.getSystemService(Context.ALARM_SERVICE);
+   am.set(AlarmManager.ELAPSED_REALTIME, nextAttempt, retryPendingIntent);
+   backoffTimeMs *= 2; // Next retry should wait longer.
+   // update back-off time on shared preferences
+ } else {
+   // Unrecoverable error, log it
+   Log.i(TAG, "Received error: " + error);
+}
+...</pre>
+<p> The back-off time is stored in a shared preference. This ensures that it is persistent across multiple activity launches. The name of the intent does not matter, as long as the same intent is used in the following steps.</p></li>
+
+  <li> Change the <code>onHandleIntent()</code> method adding an <code>else if</code> case for the retry intent:</li>
+
+<pre class="prettyprint pretty-java">...
+} else if (action.equals("com.example.gcm.intent.RETRY")) {
+    String token = intent.getStringExtra("token");
+    // make sure intent was generated by this class, not by a malicious app
+    if (TOKEN.equals(token)) {
+        String registrationId = // get from shared properties
+        if (registrationId != null) {
+        // last operation was attempt to unregister; send UNREGISTER intent again
+    } else {
+        // last operation was attempt to register; send REGISTER intent again
+    }
+}
+...</pre>
+
+  <li> Create a new instance of <code>MyReceiver</code> in your activity:</li>
+
+<pre class="prettyprint pretty-java">private final MyBroadcastReceiver mRetryReceiver = new MyBroadcastReceiver();
+</pre>
+
+  <li>In the activity's <code>onCreate()</code> method, register the new instance to receive the <code>com.example.gcm.intent.RETRY</code> intent:
+    <pre class="prettyprint pretty-java">...
+IntentFilter filter = new IntentFilter(&quot;com.example.gcm.intent.RETRY&quot;);
+filter.addCategory(getPackageName());
+registerReceiver(mRetryReceiver, filter);
+...</pre>
+
+<p class="note"><strong>Note:</strong> You must dynamically create a new instance of the broadcast receiver since the one defined by the manifest can only receive intents with the <code>com.google.android.c2dm.permission.SEND</code> permission. The permission <code>com.google.android.c2dm.permission.SEND</code> is a system permission and as such it cannot be granted to a regular application.</p>
+
+</li>
+
+  <li>In the activity's <code>onDestroy()</code> method, unregister the broadcast receiver:</li>
+
+<pre class="prettyprint pretty-java">unregisterReceiver(mRetryReceiver);</pre>
+</ol>
+<h2 id="unreg">How Unregistration Works</h2>
+<p>There are two ways to unregister a device from GCM: manually and automatically.</p>
+<p>An Android application can manually unregister itself by issuing a <code>com.google.android.c2dm.intent.UNREGISTER</code> intent, which is useful when the application offers a logoff feature (so it can unregister on logoff and register again on logon). See the <a href="gcm.html#unregistering">Architectural Overview</a> for more discussion of this topic. This is the sequence of events when an application unregisters itself:</p>
+<ol>
+  <li> The application issues a <code>com.google.android.c2dm.intent.UNREGISTER</code> intent, passing the registration ID (the application should have saved its registration ID when it received the proper <code>com.google.android.c2dm.intent.REGISTRATION</code> intent).</li>
+  <li>When the GCM server is done with the unregistration, it sends a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent with the <code>unregistered</code> extra set.</li>
+  <li>The application then must contact the 3rd-party server so it can remove the registration ID.</li>
+  <li>The application should also clear its registration ID.
+  </li>
+</ol>
+<p>An application can be automatically unregistered after it is uninstalled from the device. However, this process does not happens right away, as Android does not provide an uninstall callback. What happens in this scenario is as follows:</p>
+<ol>
+  <li>The end user uninstalls the application.</li>
+  <li>The 3rd-party server sends a message to GCM server.</li>
+  <li>The GCM server sends the message to the device.</li>
+  <li>The GCM client receives the message and queries Package Manager, which returns a &quot;package not found&quot; error.</li>
+  <li>The GCM client informs the GCM server that the application was uninstalled.</li>
+  <li>The GCM server marks the registration ID for deletion.</li>
+  <li>The 3rd-party server sends a message to  GCM.</li>
+  <li>The GCM returns a <code>NotRegistered</code> error message to the 3rd-party server.</li>
+  <li>The 3rd-party deletes the registration ID.
+  </li>
+</ol>
+<p>Note that it might take a while for the registration ID be completely removed from GCM. Thus it is possible that messages sent during step 7 above gets a valid message ID as response, even though the message will not be delivered to the device. Eventually, the registration ID will be removed and the server will get a <code>NotRegistered</code> error, without any further action being required from the 3rd-party server (this scenario happens frequently while an application is being developed and tested).</p>
+
+<h2 id="collapsible">Send-to-Sync  vs. Messages with Payload</h2>
+<p>Every message sent in GCM, regardless of its other characteristics, is either a &quot;send-to-sync&quot; (collapsible) message or a &quot;message with payload&quot; (non-collapsible message).</p>
+<h3 id="s2s"><strong>Send-to-sync messages</strong></h3>
+<p>A send-to-sync (collapsible) message is typically a &quot;tickle&quot; that tells a mobile application to sync data from the server. For example, suppose you have an email application. When a user receives new email on the server, the server pings the mobile application with a &quot;New mail&quot; message. This tells the application to sync to the server to pick up the new email. The server might send this message multiple times as new mail continues to accumulate, before the application has had a chance to sync. But if the user has received 25 new emails, there's no need to preserve every &quot;New mail&quot; message. One  is sufficient. This is a case where you would use the GCM <code>collapse_key</code> parameter. A <em>collapse key</em> is an arbitrary string that is used to collapse a group of like messages when the device is offline, so that only the last message gets sent to the client. For example, &quot;New mail,&quot; &quot;Updates available,&quot; and so on</p>
+<p>GCM allows a maximum of 4 different collapse keys to be used by the GCM server at any given time. In other words, the GCM server can simultaneously store 4 different send-to-sync messages, each with a different collapse key.</p>
+<h3 id="payload">Messages with payload</h3>
+<p>Unlike a send-to-sync message, every &quot;message with payload&quot; (non-collapsible message) is delivered. The payload the message contains can be up to 4K. For example, here is a JSON-formatted message in an IM application in which spectators are discussing a sporting event:</p>
+
+<pre class="prettyprint pretty-json">{
+  "registration_id" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
+  "data" : {
+    "Nick" : "Mario",
+    "Text" : "great match!",
+    "Room" : "PortugalVSDenmark",
+  },
+}</pre>
+
+<p>A &quot;message with payload&quot; is not simply a &quot;ping&quot; to the mobile application to contact the server to fetch data. In the aforementioned IM application, for example, you would want to deliver every message, because every message has different content. To specify a non-collapsible message, you simply omit the <code>collapse_key</code> parameter. Thus GCM will send each message individually. Note that the order of delivery is not guaranteed.</p>
+<p>GCM will store up to 100 non-collapsible messages. After that, all messages are discarded from GCM, and a new message is created that tells the client how far behind it is. The message is delivered through a regular <code>com.google.android.c2dm.intent.RECEIVE</code> intent, with the following extras:</p>
+<ul>
+  <li> <code>message_type</code>&mdash;The value is always the string &quot;deleted_messages&quot;.</li>
+  <li><code>total_deleted</code>&mdash;The value  is a string with the number of deleted messages.</li>
+</ul>
+<p>The application should respond by syncing with the server to recover the discarded messages. </p>
+  <p class="note"><strong>Note:</strong> If your application does not need to use non-collapsible messages, collapsible messages are a better choice from a performance standpoint, because they put less of a burden on the device battery.
+ 
+</p>
+<h2 dir="ltr" id="ttl">Setting an Expiration Date for a Message</h2>
+<p>The Time to Live (TTL) feature lets  the sender  specify the maximum lifespan of a message using the <code>time_to_live</code> parameter in the send request. The value of this parameter must be a duration from 0 to 2,419,200 seconds, and it corresponds to the maximum period of time for which GCM will store and try to deliver the message. Requests that don't contain this field default to the maximum period of 4 weeks.</p>
+<p>Here are some possible uses for this feature:</p>
+<ul>
+  <li>Video chat incoming calls</li>
+  <li>Expiring invitation events</li>
+  <li>Calendar events</li>
+</ul>
+<h3 id="bg">Background </h3>
+<p>GCM will usually deliver messages immediately after they are sent. However, this might not always be possible. For example, the device could be turned off, offline, or otherwise unavailable. In other cases, the sender itself might request that messages not be delivered until the device becomes active by using the <code>delay_while_idle</code> flag. Finally, GCM might intentionally delay messages to prevent an application from consuming excessive resources and negatively impacting battery life.</p>
+<p>When this happens, GCM will store the message and deliver it as soon as it's feasible. While this is fine in most cases, there are some applications for which a late message might as well never be delivered. For example, if the message is an incoming call or video chat notification, it will only be meaningful for a small period of time before the call is terminated. Or if the message is an invitation to an event, it will be useless if received after the event has ended.</p>
+<p>Another advantage of specifying the expiration date for a message is that GCM will never throttle messages with a <code>time_to_live</code> value of 0 seconds. In other words, GCM will guarantee best effort for messages that must be delivered &quot;now or never.&quot; Keep in mind that a <code>time_to_live</code> value of 0 means messages that can't be delivered immediately will be discarded. However, because such messages are never stored, this provides the best latency for sending notifications.</p>
+<p>Here is an example of a JSON-formatted request that includes TTL:</p>
+<pre class="prettyprint pretty-json">
+{
+  "collapse_key" : "demo",
+  "delay_while_idle" : true,
+  "registration_ids" : ["xyz"],
+  "data" : {
+    "key1" : "value1",
+    "key2" : "value2",
+  },
+  "time_to_live" : 3
+},
+</pre>
+
+
+<h2 id="multi-senders">Receiving Messages from Multiple Senders</h2>
+<p>GCM allows multiple parties to send messages to the same application. For example, suppose your application is an articles aggregator with multiple contributors, and you want each of them to be able to send a message when they publish a new article. This message might contain a URL so that the application can download the article. Instead of having to centralize all sending activity in one location, GCM gives you the ability to let each of these contributors send its own messages.</p>
+<p>To make this possible, all you need to do is have each sender generate its own project ID. Then include those IDs in the sender field, separated by commas, when requesting a registration. Finally, share the registration ID with your partners, and they'll be able to send messages to your application using their own authentication keys.</p>
+<p>This code snippet illustrates this feature. Senders are passed as an intent extra in a comma-separated list:</p>
+<pre class="prettyprint pretty-java">Intent intent = new Intent(GCMConstants.INTENT_TO_GCM_REGISTRATION);
+intent.setPackage(GSF_PACKAGE);
+intent.putExtra(GCMConstants.EXTRA_APPLICATION_PENDING_INTENT,
+        PendingIntent.getBroadcast(context, 0, new Intent(), 0));
+String senderIds = &quot;968350041068,652183961211&quot;;
+intent.putExtra(GCMConstants.EXTRA_SENDER, senderIds);
+ontext.startService(intent);
+ </pre>
+
+<p>Note that there is limit of 100 multiple senders.</p>
+ 
diff --git a/docs/html/guide/google/gcm/c2dm.jd b/docs/html/guide/google/gcm/c2dm.jd
new file mode 100644
index 0000000..fd1bb0c
--- /dev/null
+++ b/docs/html/guide/google/gcm/c2dm.jd
@@ -0,0 +1,107 @@
+page.title=Migration
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Quickview</h2>
+
+<ul>
+<li>Understand the differences between GCM and C2DM.</li>
+<li>Learn how to migrate an app from C2DM to GCM.</li>
+
+</ul>
+
+
+<h2>In this document</h2>
+
+<ol>
+<li><a href="#history">Historical Overview</a></li>
+<li><a href="#diffs">How is GCM Different from C2DM?</a></li>
+<li><a href="#migrating">Migrating Your Apps</a>
+  <ol>
+    <li><a href="#client">Client changes</a></li>
+    <li><a href="#server">Server changes</a></li>
+  </ol>
+</li>
+</ol>
+
+</div>
+</div>
+
+<p>Android Cloud to Device Messaging (C2DM) is deprecated. The C2DM service will continue to be maintained in the short term, but C2DM will accept no new users, and it will grant no new quotas. <strong>C2DM developers are strongly encouraged to move to Google Cloud Messaging (GCM)</strong>. GCM is the next generation of C2DM.</p>
+<p>This document is addressed to  C2DM developers who are moving to GCM. It describes the differences between GCM and C2DM, and explains how to migrate existing C2DM apps to GCM.</p>
+
+
+<h2 id="history">Historical Overview</h2>
+<p>C2DM  was launched in 2010 to help Android apps send data from servers to their applications. Servers can tell apps to contact the server directly, to fetch updated application or user data. The C2DM service handles all aspects of queueing of messages and delivery to the target application running on the target device.</p>
+<p>GCM replaces C2DM. The focus of GCM is as follows:</p>
+<ul>
+  <li> Ease of use. No sign-up forms.</li>
+  <li>No quotas.</li>
+  <li>GCM and C2DM stats are available through the <a href="http://play.google.com/apps/publish">Android Developer Console</a>.</li>
+  <li>Battery efficiency.</li>
+  <li>Rich set of new APIs.</li>
+</ul>
+<h2 id="diffs">How is GCM Different from C2DM?</h2>
+<p>GCM builds on the core foundation of C2DM. Here is what's different:</p>
+
+<dl>
+<dt><strong>Simple API Key</strong></dt>
+<dd>To use the GCM service, you need to obtain a Simple API Key from Google APIs console page. For more information, see <a href="gs.html">Getting Started</a>. Note that GCM <em>only</em> accepts Simple API Key&mdash;using ClientLogin or OAuth2 tokens will not work.
+</dd>
+<dt><strong>Sender ID</strong></dt>
+<dd>In C2DM, the Sender ID is an email address. In GCM, the Sender ID is a project ID that you acquire from the API console, as described in <a href="https://devsite.googleplex.com/android/gcm/gs.html#create-proj">Getting Started</a>. </dd>
+
+<dt><strong>JSON format</strong></dt>
+<dd>GCM HTTP requests support JSON format in addition to plain text. For more information, see the <a href="gcm.html#send-msg">Architectural Overview</a>.</dd>
+
+<dt><strong>Multicast messages</strong></dt>
+<dd>In GCM you can send the same message to multiple devices simultaneously. For example, a sports app wanting to deliver a score update to fans can now send the message to up to 1000 registration IDs in the same request (requires JSON). For more information, see the <a href="gcm.html#send-msg">Architectural Overview</a>.</dd>
+
+<dt><strong>Multiple senders</strong></dt>
+<dd>Multiple parties can send messages to the same app with one common registration ID. For more information, see <a href="adv.html#multi-senders">Advanced Topics</a>.</dd>
+
+<dt><strong>Time-to-live messages</strong></dt>
+<dd>Apps like video chat and calendar apps can send expiring invitation events with a time-to-live value between 0 and 4 weeks. GCM will store the messages until they expire. A message with a time-to-live value of 0 will not be stored on the GCM server, nor will it be throttled. For more information, see <a href="adv.html#ttl">Advanced Topics</a>.</dd>
+
+<dt><strong>Messages with payload</strong></dt>
+<dd>Apps can use &quot;messages with payload&quot; to deliver  messages of up to 4 Kb. This would be useful in a chat application, for example. To use this feature, simply omit the <code>collapse_key</code> parameter and messages will not be collapsed. GCM will store up to 100 messages. If you exceed that number, all messages will be discarded but you will receive a special message. If an application receives this message, it needs to sync with the server. For more information, see <a href="adv.html#collapsible">Advanced Topics</a>.</dd>
+
+<dt><strong>Canonical registration ID</strong></dt>
+<dd>There may be situations where the server ends up with 2 registration IDs for the same device. If the GCM response contains a registration ID, simply replace the registration ID you have with the one provided. With this feature your application doesn't need to send the device ID to your server anymore. For more information, see <a href="adv.html#canonical">Advanced Topics</a>.</dd>
+</dl>
+<p>GCM also provides helper libraries (<a href="{@docRoot}guide/google/gcm/client-javadoc/index.html">client</a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html">server</a>) to make writing your code easier.</p>
+<h2 id="migrating">Migrating Your Apps</h2>
+<p>This section describes how to move existing C2DM apps to GCM.</p>
+<h3 id="client">Client changes</h3>
+<p>Migration is simple! The only change required in the application is replacing the email account passed in the sender parameter of the registration intent with the project ID generated when signing up for the new service. For example:</p>
+<pre class="prettyprint pretty-java">Intent registrationIntent = new Intent(&quot;com.google.android.c2dm.intent.REGISTER&quot;);
+// sets the app name in the intent
+registrationIntent.putExtra(&quot;app&quot;, PendingIntent.getBroadcast(this, 0, new Intent(), 0));
+registrationIntent.putExtra(&quot;sender&quot;, senderID);
+startService(registrationIntent);</pre>
+<p>After receiving a response from GCM, the registration ID obtained must be sent to the application server. When doing this, the application should indicate that it is sending a GCM registration ID so that the server can distinguish it from existing C2DM registrations.</p>
+<h3 id="server">Server changes</h3>
+<p>When the application server receives a GCM registration ID, it should store it and mark it as such.</p>
+<p>Sending messages to GCM devices requires a few changes:</p>
+<ul>
+  <li> The request should be sent to  a new endpoint: <code>https://android.googleapis.com/gcm/send</code>.</li>
+  <li>The Authorization header of the request should contain the API key generated during sign up. This key replaces the deprecated ClientLogin Auth token.</li>
+</ul>
+<p>For example:
+</p>
+<pre>Content-Type:application/json
+Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA
+
+{
+  "registration_id" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
+  "data" : {
+    "Team" : "Portugal",
+    "Score" : "3",
+    "Player" : "Varela",
+  },
+}</pre>
+<p>For a detailed discussion of this topic and more examples, see the <a href="gcm.html#send-msg">Architectural Overview</a>.</p>
+<p>Eventually, once enough users of your application have migrated to the new service, you might want to take advantage of the new <a href="gcm.html#send-msg">JSON-formatted</a> requests that give access to the full set of features provided by GCM.</p>
+
diff --git a/docs/html/guide/google/gcm/client-javadoc/allclasses-frame.html b/docs/html/guide/google/gcm/client-javadoc/allclasses-frame.html
new file mode 100644
index 0000000..4788142
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/allclasses-frame.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+All Classes
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm" target="classFrame">GCMBaseIntentService</A>
+<BR>
+<A HREF="com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm" target="classFrame">GCMBroadcastReceiver</A>
+<BR>
+<A HREF="com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm" target="classFrame">GCMConstants</A>
+<BR>
+<A HREF="com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm" target="classFrame">GCMRegistrar</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/allclasses-noframe.html b/docs/html/guide/google/gcm/client-javadoc/allclasses-noframe.html
new file mode 100644
index 0000000..cf3b68c
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/allclasses-noframe.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+All Classes
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<BR>
+<A HREF="com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm">GCMBroadcastReceiver</A>
+<BR>
+<A HREF="com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<BR>
+<A HREF="com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
new file mode 100644
index 0000000..0b2cfad
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
@@ -0,0 +1,446 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+GCMBaseIntentService
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="GCMBaseIntentService";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMBaseIntentService.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMBaseIntentService.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm</FONT>
+<BR>
+Class GCMBaseIntentService</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by ">IntentService
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.GCMBaseIntentService</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public abstract class <B>GCMBaseIntentService</B><DT>extends IntentService</DL>
+</PRE>
+
+<P>
+Skeleton for application-specific <CODE>IntentService</CODE>s responsible for
+ handling communication from Google Cloud Messaging service.
+ <p>
+ The abstract methods in this class are called from its worker thread, and
+ hence should run in a limited amount of time. If they execute long
+ operations, they should spawn new threads, otherwise the worker thread will
+ be blocked.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#TAG">TAG</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected </CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#GCMBaseIntentService(java.lang.String)">GCMBaseIntentService</A></B>(java.lang.String&nbsp;senderId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subclasses must create a public no-arg constructor and pass the
+ sender id to be used for registration.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#onDeletedMessages(Context, int)">onDeletedMessages</A></B>(Context&nbsp;context,
+                  int&nbsp;total)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called when the GCM server tells pending messages have been deleted
+ because the device was idle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#onError(Context, java.lang.String)">onError</A></B>(Context&nbsp;context,
+        java.lang.String&nbsp;errorId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called on registration or unregistration error.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#onHandleIntent(Intent)">onHandleIntent</A></B>(Intent&nbsp;intent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#onMessage(Context, Intent)">onMessage</A></B>(Context&nbsp;context,
+          Intent&nbsp;intent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called when a cloud message has been received.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#onRecoverableError(Context, java.lang.String)">onRecoverableError</A></B>(Context&nbsp;context,
+                   java.lang.String&nbsp;errorId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called on a registration error that could be retried.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#onRegistered(Context, java.lang.String)">onRegistered</A></B>(Context&nbsp;context,
+             java.lang.String&nbsp;registrationId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called after a device has been registered.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html#onUnregistered(Context, java.lang.String)">onUnregistered</A></B>(Context&nbsp;context,
+               java.lang.String&nbsp;registrationId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called after a device has been unregistered.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="TAG"><!-- --></A><H3>
+TAG</H3>
+<PRE>
+public static final java.lang.String <B>TAG</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMBaseIntentService.TAG">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="GCMBaseIntentService(java.lang.String)"><!-- --></A><H3>
+GCMBaseIntentService</H3>
+<PRE>
+protected <B>GCMBaseIntentService</B>(java.lang.String&nbsp;senderId)</PRE>
+<DL>
+<DD>Subclasses must create a public no-arg constructor and pass the
+ sender id to be used for registration.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="onMessage(Context, Intent)"><!-- --></A><H3>
+onMessage</H3>
+<PRE>
+protected abstract void <B>onMessage</B>(Context&nbsp;context,
+                                  Intent&nbsp;intent)</PRE>
+<DL>
+<DD>Called when a cloud message has been received.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application's context.<DD><CODE>intent</CODE> - intent containing the message payload as extras.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="onDeletedMessages(Context, int)"><!-- --></A><H3>
+onDeletedMessages</H3>
+<PRE>
+protected void <B>onDeletedMessages</B>(Context&nbsp;context,
+                                 int&nbsp;total)</PRE>
+<DL>
+<DD>Called when the GCM server tells pending messages have been deleted
+ because the device was idle.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application's context.<DD><CODE>total</CODE> - total number of collapsed messages</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="onRecoverableError(Context, java.lang.String)"><!-- --></A><H3>
+onRecoverableError</H3>
+<PRE>
+protected boolean <B>onRecoverableError</B>(Context&nbsp;context,
+                                     java.lang.String&nbsp;errorId)</PRE>
+<DL>
+<DD>Called on a registration error that could be retried.
+
+ <p>By default, it does nothing and returns true, but could be
+ overridden to change that behavior and/or display the error.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application's context.<DD><CODE>errorId</CODE> - error id returned by the GCM service.
+<DT><B>Returns:</B><DD>if true, failed operation will be retried (using
+         exponential backoff).</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="onError(Context, java.lang.String)"><!-- --></A><H3>
+onError</H3>
+<PRE>
+protected abstract void <B>onError</B>(Context&nbsp;context,
+                                java.lang.String&nbsp;errorId)</PRE>
+<DL>
+<DD>Called on registration or unregistration error.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application's context.<DD><CODE>errorId</CODE> - error id returned by the GCM service.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="onRegistered(Context, java.lang.String)"><!-- --></A><H3>
+onRegistered</H3>
+<PRE>
+protected abstract void <B>onRegistered</B>(Context&nbsp;context,
+                                     java.lang.String&nbsp;registrationId)</PRE>
+<DL>
+<DD>Called after a device has been registered.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application's context.<DD><CODE>registrationId</CODE> - the registration id returned by the GCM service.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="onUnregistered(Context, java.lang.String)"><!-- --></A><H3>
+onUnregistered</H3>
+<PRE>
+protected abstract void <B>onUnregistered</B>(Context&nbsp;context,
+                                       java.lang.String&nbsp;registrationId)</PRE>
+<DL>
+<DD>Called after a device has been unregistered.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>registrationId</CODE> - the registration id that was previously registered.<DD><CODE>context</CODE> - application's context.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="onHandleIntent(Intent)"><!-- --></A><H3>
+onHandleIntent</H3>
+<PRE>
+public final void <B>onHandleIntent</B>(Intent&nbsp;intent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMBaseIntentService.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMBaseIntentService.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
new file mode 100644
index 0000000..f0b3e26
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+GCMBroadcastReceiver
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="GCMBroadcastReceiver";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMBroadcastReceiver.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMBroadcastReceiver.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm</FONT>
+<BR>
+Class GCMBroadcastReceiver</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by ">BroadcastReceiver
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.GCMBroadcastReceiver</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public class <B>GCMBroadcastReceiver</B><DT>extends BroadcastReceiver</DL>
+</PRE>
+
+<P>
+<CODE>BroadcastReceiver</CODE> that receives GCM messages and delivers them to
+ an application-specific <A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><CODE>GCMBaseIntentService</CODE></A> subclass.
+ <p>
+ By default, the <A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><CODE>GCMBaseIntentService</CODE></A> class belongs to the application
+ main package and is named
+ <A HREF="../../../../com/google/android/gcm/GCMConstants.html#DEFAULT_INTENT_SERVICE_CLASS_NAME"><CODE>GCMConstants.DEFAULT_INTENT_SERVICE_CLASS_NAME</CODE></A>. To use a new class,
+ the <A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html#getGCMIntentServiceClassName(Context)"><CODE>getGCMIntentServiceClassName(Context)</CODE></A> must be overridden.
+<P>
+
+<P>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html#GCMBroadcastReceiver()">GCMBroadcastReceiver</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html#getGCMIntentServiceClassName(Context)">getGCMIntentServiceClassName</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the class name of the intent service that will handle GCM messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html#onReceive(Context, Intent)">onReceive</A></B>(Context&nbsp;context,
+          Intent&nbsp;intent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="GCMBroadcastReceiver()"><!-- --></A><H3>
+GCMBroadcastReceiver</H3>
+<PRE>
+public <B>GCMBroadcastReceiver</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="onReceive(Context, Intent)"><!-- --></A><H3>
+onReceive</H3>
+<PRE>
+public final void <B>onReceive</B>(Context&nbsp;context,
+                            Intent&nbsp;intent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGCMIntentServiceClassName(Context)"><!-- --></A><H3>
+getGCMIntentServiceClassName</H3>
+<PRE>
+protected java.lang.String <B>getGCMIntentServiceClassName</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Gets the class name of the intent service that will handle GCM messages.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMBroadcastReceiver.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMBroadcastReceiver.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
new file mode 100644
index 0000000..feb2225
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
@@ -0,0 +1,652 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+GCMConstants
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="GCMConstants";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMConstants.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMConstants.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Object">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm</FONT>
+<BR>
+Class GCMConstants</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.GCMConstants</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public final class <B>GCMConstants</B><DT>extends java.lang.Object</DL>
+</PRE>
+
+<P>
+Constants used by the GCM library.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#DEFAULT_INTENT_SERVICE_CLASS_NAME">DEFAULT_INTENT_SERVICE_CLASS_NAME</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#ERROR_ACCOUNT_MISSING">ERROR_ACCOUNT_MISSING</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There is no Google account on the phone.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#ERROR_AUTHENTICATION_FAILED">ERROR_AUTHENTICATION_FAILED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bad password.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#ERROR_INVALID_PARAMETERS">ERROR_INVALID_PARAMETERS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The request sent by the phone does not contain the expected parameters.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#ERROR_INVALID_SENDER">ERROR_INVALID_SENDER</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The sender account is not recognized.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#ERROR_PHONE_REGISTRATION_ERROR">ERROR_PHONE_REGISTRATION_ERROR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Incorrect phone registration with Google.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#ERROR_SERVICE_NOT_AVAILABLE">ERROR_SERVICE_NOT_AVAILABLE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The device can't read the response, or there was a 500/503 from the
+ server that can be retried later.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_APPLICATION_PENDING_INTENT">EXTRA_APPLICATION_PENDING_INTENT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to get the application
+ id.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_ERROR">EXTRA_ERROR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ an error when the registration fails.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID">EXTRA_REGISTRATION_ID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ the registration id when the registration succeeds.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_SENDER">EXTRA_SENDER</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to indicate the sender
+ account (a Google email) that owns the application.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_SPECIAL_MESSAGE">EXTRA_SPECIAL_MESSAGE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type of message present in the <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE"><CODE>INTENT_FROM_GCM_MESSAGE</CODE></A> intent.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_TOTAL_DELETED">EXTRA_TOTAL_DELETED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number of messages deleted by the server because the device was idle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_UNREGISTERED">EXTRA_UNREGISTERED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ that the application has been unregistered.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_LIBRARY_RETRY">INTENT_FROM_GCM_LIBRARY_RETRY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent used by the GCM library to indicate that the registration call
+ should be retried.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">INTENT_FROM_GCM_MESSAGE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent sent by GCM containing a message.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">INTENT_FROM_GCM_REGISTRATION_CALLBACK</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent sent by GCM indicating with the result of a registration request.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">INTENT_TO_GCM_REGISTRATION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent sent to GCM to register the application.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_UNREGISTRATION">INTENT_TO_GCM_UNREGISTRATION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent sent to GCM to unregister the application.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#PERMISSION_GCM_INTENTS">PERMISSION_GCM_INTENTS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Permission necessary to receive GCM intents.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#VALUE_DELETED_MESSAGES">VALUE_DELETED_MESSAGES</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Special message indicating the server deleted the pending messages.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="INTENT_TO_GCM_REGISTRATION"><!-- --></A><H3>
+INTENT_TO_GCM_REGISTRATION</H3>
+<PRE>
+public static final java.lang.String <B>INTENT_TO_GCM_REGISTRATION</B></PRE>
+<DL>
+<DD>Intent sent to GCM to register the application.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.INTENT_TO_GCM_REGISTRATION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="INTENT_TO_GCM_UNREGISTRATION"><!-- --></A><H3>
+INTENT_TO_GCM_UNREGISTRATION</H3>
+<PRE>
+public static final java.lang.String <B>INTENT_TO_GCM_UNREGISTRATION</B></PRE>
+<DL>
+<DD>Intent sent to GCM to unregister the application.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.INTENT_TO_GCM_UNREGISTRATION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="INTENT_FROM_GCM_REGISTRATION_CALLBACK"><!-- --></A><H3>
+INTENT_FROM_GCM_REGISTRATION_CALLBACK</H3>
+<PRE>
+public static final java.lang.String <B>INTENT_FROM_GCM_REGISTRATION_CALLBACK</B></PRE>
+<DL>
+<DD>Intent sent by GCM indicating with the result of a registration request.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="INTENT_FROM_GCM_LIBRARY_RETRY"><!-- --></A><H3>
+INTENT_FROM_GCM_LIBRARY_RETRY</H3>
+<PRE>
+public static final java.lang.String <B>INTENT_FROM_GCM_LIBRARY_RETRY</B></PRE>
+<DL>
+<DD>Intent used by the GCM library to indicate that the registration call
+ should be retried.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_LIBRARY_RETRY">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="INTENT_FROM_GCM_MESSAGE"><!-- --></A><H3>
+INTENT_FROM_GCM_MESSAGE</H3>
+<PRE>
+public static final java.lang.String <B>INTENT_FROM_GCM_MESSAGE</B></PRE>
+<DL>
+<DD>Intent sent by GCM containing a message.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_MESSAGE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTRA_SENDER"><!-- --></A><H3>
+EXTRA_SENDER</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_SENDER</B></PRE>
+<DL>
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to indicate the sender
+ account (a Google email) that owns the application.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_SENDER">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTRA_APPLICATION_PENDING_INTENT"><!-- --></A><H3>
+EXTRA_APPLICATION_PENDING_INTENT</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_APPLICATION_PENDING_INTENT</B></PRE>
+<DL>
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to get the application
+ id.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_APPLICATION_PENDING_INTENT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTRA_UNREGISTERED"><!-- --></A><H3>
+EXTRA_UNREGISTERED</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_UNREGISTERED</B></PRE>
+<DL>
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ that the application has been unregistered.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_UNREGISTERED">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTRA_ERROR"><!-- --></A><H3>
+EXTRA_ERROR</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_ERROR</B></PRE>
+<DL>
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ an error when the registration fails. See constants starting with ERROR_
+ for possible values.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_ERROR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTRA_REGISTRATION_ID"><!-- --></A><H3>
+EXTRA_REGISTRATION_ID</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_REGISTRATION_ID</B></PRE>
+<DL>
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ the registration id when the registration succeeds.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_REGISTRATION_ID">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTRA_SPECIAL_MESSAGE"><!-- --></A><H3>
+EXTRA_SPECIAL_MESSAGE</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_SPECIAL_MESSAGE</B></PRE>
+<DL>
+<DD>Type of message present in the <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE"><CODE>INTENT_FROM_GCM_MESSAGE</CODE></A> intent.
+ This extra is only set for special messages sent from GCM, not for
+ messages originated from the application.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_SPECIAL_MESSAGE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="VALUE_DELETED_MESSAGES"><!-- --></A><H3>
+VALUE_DELETED_MESSAGES</H3>
+<PRE>
+public static final java.lang.String <B>VALUE_DELETED_MESSAGES</B></PRE>
+<DL>
+<DD>Special message indicating the server deleted the pending messages.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.VALUE_DELETED_MESSAGES">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTRA_TOTAL_DELETED"><!-- --></A><H3>
+EXTRA_TOTAL_DELETED</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_TOTAL_DELETED</B></PRE>
+<DL>
+<DD>Number of messages deleted by the server because the device was idle.
+ Present only on messages of special type
+ <A HREF="../../../../com/google/android/gcm/GCMConstants.html#VALUE_DELETED_MESSAGES"><CODE>VALUE_DELETED_MESSAGES</CODE></A>
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_TOTAL_DELETED">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PERMISSION_GCM_INTENTS"><!-- --></A><H3>
+PERMISSION_GCM_INTENTS</H3>
+<PRE>
+public static final java.lang.String <B>PERMISSION_GCM_INTENTS</B></PRE>
+<DL>
+<DD>Permission necessary to receive GCM intents.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.PERMISSION_GCM_INTENTS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DEFAULT_INTENT_SERVICE_CLASS_NAME"><!-- --></A><H3>
+DEFAULT_INTENT_SERVICE_CLASS_NAME</H3>
+<PRE>
+public static final java.lang.String <B>DEFAULT_INTENT_SERVICE_CLASS_NAME</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><CODE>GCMBroadcastReceiver</CODE></A>, 
+<A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.DEFAULT_INTENT_SERVICE_CLASS_NAME">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_SERVICE_NOT_AVAILABLE"><!-- --></A><H3>
+ERROR_SERVICE_NOT_AVAILABLE</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_SERVICE_NOT_AVAILABLE</B></PRE>
+<DL>
+<DD>The device can't read the response, or there was a 500/503 from the
+ server that can be retried later. The application should use exponential
+ back off and retry.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.ERROR_SERVICE_NOT_AVAILABLE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_ACCOUNT_MISSING"><!-- --></A><H3>
+ERROR_ACCOUNT_MISSING</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_ACCOUNT_MISSING</B></PRE>
+<DL>
+<DD>There is no Google account on the phone. The application should ask the
+ user to open the account manager and add a Google account.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.ERROR_ACCOUNT_MISSING">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_AUTHENTICATION_FAILED"><!-- --></A><H3>
+ERROR_AUTHENTICATION_FAILED</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_AUTHENTICATION_FAILED</B></PRE>
+<DL>
+<DD>Bad password. The application should ask the user to enter his/her
+ password, and let user retry manually later. Fix on the device side.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.ERROR_AUTHENTICATION_FAILED">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_INVALID_PARAMETERS"><!-- --></A><H3>
+ERROR_INVALID_PARAMETERS</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_INVALID_PARAMETERS</B></PRE>
+<DL>
+<DD>The request sent by the phone does not contain the expected parameters.
+ This phone doesn't currently support GCM.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.ERROR_INVALID_PARAMETERS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_INVALID_SENDER"><!-- --></A><H3>
+ERROR_INVALID_SENDER</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_INVALID_SENDER</B></PRE>
+<DL>
+<DD>The sender account is not recognized. Fix on the device side.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.ERROR_INVALID_SENDER">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_PHONE_REGISTRATION_ERROR"><!-- --></A><H3>
+ERROR_PHONE_REGISTRATION_ERROR</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_PHONE_REGISTRATION_ERROR</B></PRE>
+<DL>
+<DD>Incorrect phone registration with Google. This phone doesn't currently
+ support GCM.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.ERROR_PHONE_REGISTRATION_ERROR">Constant Field Values</A></DL>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMConstants.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMConstants.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Object">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
new file mode 100644
index 0000000..a933bc6
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
@@ -0,0 +1,445 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+GCMRegistrar
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="GCMRegistrar";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMRegistrar.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMRegistrar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm</FONT>
+<BR>
+Class GCMRegistrar</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.GCMRegistrar</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public final class <B>GCMRegistrar</B><DT>extends java.lang.Object</DL>
+</PRE>
+
+<P>
+Utilities for device registration.
+ <p>
+ <strong>Note:</strong> this class uses a private <CODE>SharedPreferences</CODE>
+ object to keep track of the registration token.
+<P>
+
+<P>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#checkDevice(Context)">checkDevice</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks if the device has the proper dependencies installed.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#checkManifest(Context)">checkManifest</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks that the application manifest is properly configured.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#getRegistrationId(Context)">getRegistrationId</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the current registration id for application on GCM service.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#isRegistered(Context)">isRegistered</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks whether the application was successfully registered on GCM
+ service.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#isRegisteredOnServer(Context)">isRegisteredOnServer</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks whether the device was successfully registered in the server side.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#onDestroy(Context)">onDestroy</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clear internal resources.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#register(Context, java.lang.String...)">register</A></B>(Context&nbsp;context,
+         java.lang.String...&nbsp;senderIds)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initiate messaging registration for the current application.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#setRegisteredOnServer(Context, boolean)">setRegisteredOnServer</A></B>(Context&nbsp;context,
+                      boolean&nbsp;flag)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets whether the device was successfully registered in the server side.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html#unregister(Context)">unregister</A></B>(Context&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unregister the application.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="checkDevice(Context)"><!-- --></A><H3>
+checkDevice</H3>
+<PRE>
+public static void <B>checkDevice</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Checks if the device has the proper dependencies installed.
+ <p>
+ This method should be called when the application starts to verify that
+ the device supports GCM.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application context.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.UnsupportedOperationException</CODE> - if the device does not support GCM.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="checkManifest(Context)"><!-- --></A><H3>
+checkManifest</H3>
+<PRE>
+public static void <B>checkManifest</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Checks that the application manifest is properly configured.
+ <p>
+ A proper configuration means:
+ <ol>
+    <li>It creates a custom permission called
+      <code>PACKAGE_NAME.permission.C2D_MESSAGE</code>.
+    <li>It defines at least one <CODE>BroadcastReceiver</CODE> with category
+      <code>PACKAGE_NAME</code>.
+    <li>The <CODE>BroadcastReceiver</CODE>(s) uses the
+       permission.
+    <li>The <CODE>BroadcastReceiver</CODE>(s) handles the 3 GCM intents
+      (,
+      ,
+      and ).
+ </ol>
+ ...where <code>PACKAGE_NAME</code> is the application package.
+ <p>
+ This method should be used during development time to verify that the
+ manifest is properly set up, but it doesn't need to be called once the
+ application is deployed to the users' devices.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application context.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalStateException</CODE> - if any of the conditions above is not met.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="register(Context, java.lang.String...)"><!-- --></A><H3>
+register</H3>
+<PRE>
+public static void <B>register</B>(Context&nbsp;context,
+                            java.lang.String...&nbsp;senderIds)</PRE>
+<DL>
+<DD>Initiate messaging registration for the current application.
+ <p>
+ The result will be returned as an
+ <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> intent with
+ either a <A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID"><CODE>GCMConstants.EXTRA_REGISTRATION_ID</CODE></A> or
+ <A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_ERROR"><CODE>GCMConstants.EXTRA_ERROR</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>context</CODE> - application context.<DD><CODE>senderIds</CODE> - Google Project ID of the accounts authorized to send
+    messages to this application.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalStateException</CODE> - if device does not have all GCM
+             dependencies installed.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="unregister(Context)"><!-- --></A><H3>
+unregister</H3>
+<PRE>
+public static void <B>unregister</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Unregister the application.
+ <p>
+ The result will be returned as an
+ <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> intent with an
+ <A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_UNREGISTERED"><CODE>GCMConstants.EXTRA_UNREGISTERED</CODE></A> extra.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="onDestroy(Context)"><!-- --></A><H3>
+onDestroy</H3>
+<PRE>
+public static void <B>onDestroy</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Clear internal resources.
+
+ <p>
+ This method should be called by the main activity's <code>onDestroy()</code>
+ method.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRegistrationId(Context)"><!-- --></A><H3>
+getRegistrationId</H3>
+<PRE>
+public static java.lang.String <B>getRegistrationId</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Gets the current registration id for application on GCM service.
+ <p>
+ If result is empty, the registration has failed.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>registration id, or empty string if the registration is not
+         complete.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRegistered(Context)"><!-- --></A><H3>
+isRegistered</H3>
+<PRE>
+public static boolean <B>isRegistered</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Checks whether the application was successfully registered on GCM
+ service.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setRegisteredOnServer(Context, boolean)"><!-- --></A><H3>
+setRegisteredOnServer</H3>
+<PRE>
+public static void <B>setRegisteredOnServer</B>(Context&nbsp;context,
+                                         boolean&nbsp;flag)</PRE>
+<DL>
+<DD>Sets whether the device was successfully registered in the server side.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRegisteredOnServer(Context)"><!-- --></A><H3>
+isRegisteredOnServer</H3>
+<PRE>
+public static boolean <B>isRegisteredOnServer</B>(Context&nbsp;context)</PRE>
+<DL>
+<DD>Checks whether the device was successfully registered in the server side.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/GCMRegistrar.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GCMRegistrar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-frame.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-frame.html
new file mode 100644
index 0000000..9dc665f
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-frame.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+com.google.android.gcm
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/google/android/gcm/package-summary.html" target="classFrame">com.google.android.gcm</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="GCMBaseIntentService.html" title="class in com.google.android.gcm" target="classFrame">GCMBaseIntentService</A>
+<BR>
+<A HREF="GCMBroadcastReceiver.html" title="class in com.google.android.gcm" target="classFrame">GCMBroadcastReceiver</A>
+<BR>
+<A HREF="GCMConstants.html" title="class in com.google.android.gcm" target="classFrame">GCMConstants</A>
+<BR>
+<A HREF="GCMRegistrar.html" title="class in com.google.android.gcm" target="classFrame">GCMRegistrar</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
new file mode 100644
index 0000000..2b15b81
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+com.google.android.gcm
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="com.google.android.gcm";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/package-summary.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.google.android.gcm
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A></B></TD>
+<TD>Skeleton for application-specific <CODE>IntentService</CODE>s responsible for
+ handling communication from Google Cloud Messaging service.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm">GCMBroadcastReceiver</A></B></TD>
+<TD><CODE>BroadcastReceiver</CODE> that receives GCM messages and delivers them to
+ an application-specific <A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><CODE>GCMBaseIntentService</CODE></A> subclass.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A></B></TD>
+<TD>Constants used by the GCM library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A></B></TD>
+<TD>Utilities for device registration.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<DL>
+</DL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/package-summary.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
new file mode 100644
index 0000000..f36a8a69
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+com.google.android.gcm Class Hierarchy
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="com.google.android.gcm Class Hierarchy";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/package-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.google.android.gcm
+</H2>
+</CENTER>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">java.lang.Object<UL>
+<LI TYPE="circle">BroadcastReceiver<UL>
+<LI TYPE="circle">com.google.android.gcm.<A HREF="../../../../com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><B>GCMBroadcastReceiver</B></A></UL>
+<LI TYPE="circle">com.google.android.gcm.<A HREF="../../../../com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm"><B>GCMConstants</B></A><LI TYPE="circle">com.google.android.gcm.<A HREF="../../../../com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm"><B>GCMRegistrar</B></A><LI TYPE="circle">IntentService<UL>
+<LI TYPE="circle">com.google.android.gcm.<A HREF="../../../../com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><B>GCMBaseIntentService</B></A></UL>
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/google/android/gcm/package-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/constant-values.html b/docs/html/guide/google/gcm/client-javadoc/constant-values.html
new file mode 100644
index 0000000..171c6a1
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/constant-values.html
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+Constant Field Values
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Constant Field Values";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?constant-values.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Constant Field Values</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+<LI><A HREF="#com.google">com.google.*</A>
+</UL>
+
+<A NAME="com.google"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left"><FONT SIZE="+2">
+com.google.*</FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="3">com.google.android.gcm.<A HREF="com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMBaseIntentService.TAG"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMBaseIntentService.html#TAG">TAG</A></CODE></TD>
+<TD ALIGN="right"><CODE>"GCMBaseIntentService"</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="3">com.google.android.gcm.<A HREF="com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.DEFAULT_INTENT_SERVICE_CLASS_NAME"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#DEFAULT_INTENT_SERVICE_CLASS_NAME">DEFAULT_INTENT_SERVICE_CLASS_NAME</A></CODE></TD>
+<TD ALIGN="right"><CODE>".GCMIntentService"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.ERROR_ACCOUNT_MISSING"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#ERROR_ACCOUNT_MISSING">ERROR_ACCOUNT_MISSING</A></CODE></TD>
+<TD ALIGN="right"><CODE>"ACCOUNT_MISSING"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.ERROR_AUTHENTICATION_FAILED"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#ERROR_AUTHENTICATION_FAILED">ERROR_AUTHENTICATION_FAILED</A></CODE></TD>
+<TD ALIGN="right"><CODE>"AUTHENTICATION_FAILED"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.ERROR_INVALID_PARAMETERS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#ERROR_INVALID_PARAMETERS">ERROR_INVALID_PARAMETERS</A></CODE></TD>
+<TD ALIGN="right"><CODE>"INVALID_PARAMETERS"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.ERROR_INVALID_SENDER"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#ERROR_INVALID_SENDER">ERROR_INVALID_SENDER</A></CODE></TD>
+<TD ALIGN="right"><CODE>"INVALID_SENDER"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.ERROR_PHONE_REGISTRATION_ERROR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#ERROR_PHONE_REGISTRATION_ERROR">ERROR_PHONE_REGISTRATION_ERROR</A></CODE></TD>
+<TD ALIGN="right"><CODE>"PHONE_REGISTRATION_ERROR"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.ERROR_SERVICE_NOT_AVAILABLE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#ERROR_SERVICE_NOT_AVAILABLE">ERROR_SERVICE_NOT_AVAILABLE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"SERVICE_NOT_AVAILABLE"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_APPLICATION_PENDING_INTENT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_APPLICATION_PENDING_INTENT">EXTRA_APPLICATION_PENDING_INTENT</A></CODE></TD>
+<TD ALIGN="right"><CODE>"app"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_ERROR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_ERROR">EXTRA_ERROR</A></CODE></TD>
+<TD ALIGN="right"><CODE>"error"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_REGISTRATION_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID">EXTRA_REGISTRATION_ID</A></CODE></TD>
+<TD ALIGN="right"><CODE>"registration_id"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_SENDER"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_SENDER">EXTRA_SENDER</A></CODE></TD>
+<TD ALIGN="right"><CODE>"sender"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_SPECIAL_MESSAGE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_SPECIAL_MESSAGE">EXTRA_SPECIAL_MESSAGE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"message_type"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_TOTAL_DELETED"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_TOTAL_DELETED">EXTRA_TOTAL_DELETED</A></CODE></TD>
+<TD ALIGN="right"><CODE>"total_deleted"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_UNREGISTERED"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_UNREGISTERED">EXTRA_UNREGISTERED</A></CODE></TD>
+<TD ALIGN="right"><CODE>"unregistered"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_LIBRARY_RETRY"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_LIBRARY_RETRY">INTENT_FROM_GCM_LIBRARY_RETRY</A></CODE></TD>
+<TD ALIGN="right"><CODE>"com.google.android.gcm.intent.RETRY"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_MESSAGE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">INTENT_FROM_GCM_MESSAGE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"com.google.android.c2dm.intent.RECEIVE"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">INTENT_FROM_GCM_REGISTRATION_CALLBACK</A></CODE></TD>
+<TD ALIGN="right"><CODE>"com.google.android.c2dm.intent.REGISTRATION"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.INTENT_TO_GCM_REGISTRATION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">INTENT_TO_GCM_REGISTRATION</A></CODE></TD>
+<TD ALIGN="right"><CODE>"com.google.android.c2dm.intent.REGISTER"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.INTENT_TO_GCM_UNREGISTRATION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_UNREGISTRATION">INTENT_TO_GCM_UNREGISTRATION</A></CODE></TD>
+<TD ALIGN="right"><CODE>"com.google.android.c2dm.intent.UNREGISTER"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.PERMISSION_GCM_INTENTS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#PERMISSION_GCM_INTENTS">PERMISSION_GCM_INTENTS</A></CODE></TD>
+<TD ALIGN="right"><CODE>"com.google.android.c2dm.permission.SEND"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.VALUE_DELETED_MESSAGES"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#VALUE_DELETED_MESSAGES">VALUE_DELETED_MESSAGES</A></CODE></TD>
+<TD ALIGN="right"><CODE>"deleted_messages"</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?constant-values.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/deprecated-list.html b/docs/html/guide/google/gcm/client-javadoc/deprecated-list.html
new file mode 100644
index 0000000..ebdcc26
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/deprecated-list.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+Deprecated List
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Deprecated List";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?deprecated-list.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Deprecated API</B></H2>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+</UL>
+
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?deprecated-list.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/help-doc.html b/docs/html/guide/google/gcm/client-javadoc/help-doc.html
new file mode 100644
index 0000000..0dc47eb
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/help-doc.html
@@ -0,0 +1,209 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+API Help
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="API Help";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?help-doc.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+How This API Document Is Organized</H1>
+</CENTER>
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
+Package</H3>
+<BLOCKQUOTE>
+
+<P>
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
+<LI>Interfaces (italic)<LI>Classes<LI>Enums<LI>Exceptions<LI>Errors<LI>Annotation Types</UL>
+</BLOCKQUOTE>
+<H3>
+Class/Interface</H3>
+<BLOCKQUOTE>
+
+<P>
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
+<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
+<P>
+<LI>Nested Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
+<P>
+<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
+</BLOCKQUOTE>
+<H3>
+Annotation Type</H3>
+<BLOCKQUOTE>
+
+<P>
+Each annotation type has its own separate page with the following sections:<UL>
+<LI>Annotation Type declaration<LI>Annotation Type description<LI>Required Element Summary<LI>Optional Element Summary<LI>Element Detail</UL>
+</BLOCKQUOTE>
+</BLOCKQUOTE>
+<H3>
+Enum</H3>
+<BLOCKQUOTE>
+
+<P>
+Each enum has its own separate page with the following sections:<UL>
+<LI>Enum declaration<LI>Enum description<LI>Enum Constant Summary<LI>Enum Constant Detail</UL>
+</BLOCKQUOTE>
+<H3>
+Tree (Class Hierarchy)</H3>
+<BLOCKQUOTE>
+There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
+<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
+</BLOCKQUOTE>
+<H3>
+Deprecated API</H3>
+<BLOCKQUOTE>
+The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
+<H3>
+Index</H3>
+<BLOCKQUOTE>
+The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
+<H3>
+Prev/Next</H3>
+These links take you to the next or previous class, interface, package, or related page.<H3>
+Frames/No Frames</H3>
+These links show and hide the HTML frames.  All pages are available with or without frames.
+<P>
+<H3>
+Serialized Form</H3>
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+<P>
+<H3>
+Constant Field Values</H3>
+The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.
+<P>
+<FONT SIZE="-1">
+<EM>
+This help file applies to API documentation generated using the standard doclet.</EM>
+</FONT>
+<BR>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?help-doc.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/index-all.html b/docs/html/guide/google/gcm/client-javadoc/index-all.html
new file mode 100644
index 0000000..43b8e4e
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/index-all.html
@@ -0,0 +1,331 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+Index
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="./stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Index";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="./allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="./allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_G_">G</A> <A HREF="#_I_">I</A> <A HREF="#_O_">O</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> <HR>
+<A NAME="_C_"><!-- --></A><H2>
+<B>C</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#checkDevice(Context)"><B>checkDevice(Context)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Checks if the device has the proper dependencies installed.
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#checkManifest(Context)"><B>checkManifest(Context)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Checks that the application manifest is properly configured.
+<DT><A HREF="./com/google/android/gcm/package-summary.html"><B>com.google.android.gcm</B></A> - package com.google.android.gcm<DD>&nbsp;</DL>
+<HR>
+<A NAME="_D_"><!-- --></A><H2>
+<B>D</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#DEFAULT_INTENT_SERVICE_CLASS_NAME"><B>DEFAULT_INTENT_SERVICE_CLASS_NAME</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_E_"><!-- --></A><H2>
+<B>E</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#ERROR_ACCOUNT_MISSING"><B>ERROR_ACCOUNT_MISSING</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>There is no Google account on the phone.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#ERROR_AUTHENTICATION_FAILED"><B>ERROR_AUTHENTICATION_FAILED</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Bad password.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#ERROR_INVALID_PARAMETERS"><B>ERROR_INVALID_PARAMETERS</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>The request sent by the phone does not contain the expected parameters.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#ERROR_INVALID_SENDER"><B>ERROR_INVALID_SENDER</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>The sender account is not recognized.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#ERROR_PHONE_REGISTRATION_ERROR"><B>ERROR_PHONE_REGISTRATION_ERROR</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Incorrect phone registration with Google.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#ERROR_SERVICE_NOT_AVAILABLE"><B>ERROR_SERVICE_NOT_AVAILABLE</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>The device can't read the response, or there was a 500/503 from the
+ server that can be retried later.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_APPLICATION_PENDING_INTENT"><B>EXTRA_APPLICATION_PENDING_INTENT</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>GCMConstants.INTENT_TO_GCM_REGISTRATION</CODE></A> to get the application
+ id.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_ERROR"><B>EXTRA_ERROR</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ an error when the registration fails.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID"><B>EXTRA_REGISTRATION_ID</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ the registration id when the registration succeeds.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_SENDER"><B>EXTRA_SENDER</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>GCMConstants.INTENT_TO_GCM_REGISTRATION</CODE></A> to indicate the sender
+ account (a Google email) that owns the application.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_SPECIAL_MESSAGE"><B>EXTRA_SPECIAL_MESSAGE</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Type of message present in the <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE"><CODE>GCMConstants.INTENT_FROM_GCM_MESSAGE</CODE></A> intent.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_TOTAL_DELETED"><B>EXTRA_TOTAL_DELETED</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Number of messages deleted by the server because the device was idle.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_UNREGISTERED"><B>EXTRA_UNREGISTERED</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+ that the application has been unregistered.
+</DL>
+<HR>
+<A NAME="_G_"><!-- --></A><H2>
+<B>G</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><B>GCMBaseIntentService</B></A> - Class in <A HREF="./com/google/android/gcm/package-summary.html">com.google.android.gcm</A><DD>Skeleton for application-specific <CODE>IntentService</CODE>s responsible for
+ handling communication from Google Cloud Messaging service.<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#GCMBaseIntentService(java.lang.String)"><B>GCMBaseIntentService(String)</B></A> - 
+Constructor for class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>Subclasses must create a public no-arg constructor and pass the
+ sender id to be used for registration.
+<DT><A HREF="./com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><B>GCMBroadcastReceiver</B></A> - Class in <A HREF="./com/google/android/gcm/package-summary.html">com.google.android.gcm</A><DD><CODE>BroadcastReceiver</CODE> that receives GCM messages and delivers them to
+ an application-specific <A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><CODE>GCMBaseIntentService</CODE></A> subclass.<DT><A HREF="./com/google/android/gcm/GCMBroadcastReceiver.html#GCMBroadcastReceiver()"><B>GCMBroadcastReceiver()</B></A> - 
+Constructor for class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm">GCMBroadcastReceiver</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm"><B>GCMConstants</B></A> - Class in <A HREF="./com/google/android/gcm/package-summary.html">com.google.android.gcm</A><DD>Constants used by the GCM library.<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm"><B>GCMRegistrar</B></A> - Class in <A HREF="./com/google/android/gcm/package-summary.html">com.google.android.gcm</A><DD>Utilities for device registration.<DT><A HREF="./com/google/android/gcm/GCMBroadcastReceiver.html#getGCMIntentServiceClassName(Context)"><B>getGCMIntentServiceClassName(Context)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm">GCMBroadcastReceiver</A>
+<DD>Gets the class name of the intent service that will handle GCM messages.
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#getRegistrationId(Context)"><B>getRegistrationId(Context)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Gets the current registration id for application on GCM service.
+</DL>
+<HR>
+<A NAME="_I_"><!-- --></A><H2>
+<B>I</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_LIBRARY_RETRY"><B>INTENT_FROM_GCM_LIBRARY_RETRY</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Intent used by the GCM library to indicate that the registration call
+ should be retried.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE"><B>INTENT_FROM_GCM_MESSAGE</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Intent sent by GCM containing a message.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><B>INTENT_FROM_GCM_REGISTRATION_CALLBACK</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Intent sent by GCM indicating with the result of a registration request.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><B>INTENT_TO_GCM_REGISTRATION</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Intent sent to GCM to register the application.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_UNREGISTRATION"><B>INTENT_TO_GCM_UNREGISTRATION</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Intent sent to GCM to unregister the application.
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#isRegistered(Context)"><B>isRegistered(Context)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Checks whether the application was successfully registered on GCM
+ service.
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#isRegisteredOnServer(Context)"><B>isRegisteredOnServer(Context)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Checks whether the device was successfully registered in the server side.
+</DL>
+<HR>
+<A NAME="_O_"><!-- --></A><H2>
+<B>O</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#onDeletedMessages(Context, int)"><B>onDeletedMessages(Context, int)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>Called when the GCM server tells pending messages have been deleted
+ because the device was idle.
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#onDestroy(Context)"><B>onDestroy(Context)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Clear internal resources.
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#onError(Context, java.lang.String)"><B>onError(Context, String)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>Called on registration or unregistration error.
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#onHandleIntent(Intent)"><B>onHandleIntent(Intent)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#onMessage(Context, Intent)"><B>onMessage(Context, Intent)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>Called when a cloud message has been received.
+<DT><A HREF="./com/google/android/gcm/GCMBroadcastReceiver.html#onReceive(Context, Intent)"><B>onReceive(Context, Intent)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm">GCMBroadcastReceiver</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#onRecoverableError(Context, java.lang.String)"><B>onRecoverableError(Context, String)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>Called on a registration error that could be retried.
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#onRegistered(Context, java.lang.String)"><B>onRegistered(Context, String)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>Called after a device has been registered.
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#onUnregistered(Context, java.lang.String)"><B>onUnregistered(Context, String)</B></A> - 
+Method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>Called after a device has been unregistered.
+</DL>
+<HR>
+<A NAME="_P_"><!-- --></A><H2>
+<B>P</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#PERMISSION_GCM_INTENTS"><B>PERMISSION_GCM_INTENTS</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Permission necessary to receive GCM intents.
+</DL>
+<HR>
+<A NAME="_R_"><!-- --></A><H2>
+<B>R</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#register(Context, java.lang.String...)"><B>register(Context, String...)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Initiate messaging registration for the current application.
+</DL>
+<HR>
+<A NAME="_S_"><!-- --></A><H2>
+<B>S</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#setRegisteredOnServer(Context, boolean)"><B>setRegisteredOnServer(Context, boolean)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Sets whether the device was successfully registered in the server side.
+</DL>
+<HR>
+<A NAME="_T_"><!-- --></A><H2>
+<B>T</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMBaseIntentService.html#TAG"><B>TAG</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm">GCMBaseIntentService</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_U_"><!-- --></A><H2>
+<B>U</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMRegistrar.html#unregister(Context)"><B>unregister(Context)</B></A> - 
+Static method in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm">GCMRegistrar</A>
+<DD>Unregister the application.
+</DL>
+<HR>
+<A NAME="_V_"><!-- --></A><H2>
+<B>V</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#VALUE_DELETED_MESSAGES"><B>VALUE_DELETED_MESSAGES</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Special message indicating the server deleted the pending messages.
+</DL>
+<HR>
+<A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_G_">G</A> <A HREF="#_I_">I</A> <A HREF="#_O_">O</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> 
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="./allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="./allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/index.html b/docs/html/guide/google/gcm/client-javadoc/index.html
new file mode 100644
index 0000000..a7753f7
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/index.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Thu Jun 21 12:06:25 PDT 2012-->
+<TITLE>
+Generated Documentation (Untitled)
+</TITLE>
+
+
+<SCRIPT type="text/javascript">
+    targetPage = "" + window.location.search;
+    if (targetPage != "" && targetPage != "undefined")
+        targetPage = targetPage.substring(1);
+    if (targetPage.indexOf(":") != -1)
+        targetPage = "undefined";
+    function loadFrames() {
+        if (targetPage != "" && targetPage != "undefined")
+             top.classFrame.location = top.targetPage;
+    }
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+</HEAD>
+<FRAMESET cols="20%,80%" title="" onLoad="top.loadFrames()">
+<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+<FRAME src="com/google/android/gcm/package-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes">
+<NOFRAMES>
+<H2>
+Frame Alert</H2>
+
+<P>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<BR>
+Link to<A HREF="com/google/android/gcm/package-summary.html">Non-frame version.</A>
+</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/overview-tree.html b/docs/html/guide/google/gcm/client-javadoc/overview-tree.html
new file mode 100644
index 0000000..6ea6fb3
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/overview-tree.html
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:06:25 PDT 2012 -->
+<TITLE>
+Class Hierarchy
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Class Hierarchy";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For All Packages</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="com/google/android/gcm/package-tree.html">com.google.android.gcm</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">java.lang.Object<UL>
+<LI TYPE="circle">BroadcastReceiver<UL>
+<LI TYPE="circle">com.google.android.gcm.<A HREF="com/google/android/gcm/GCMBroadcastReceiver.html" title="class in com.google.android.gcm"><B>GCMBroadcastReceiver</B></A></UL>
+<LI TYPE="circle">com.google.android.gcm.<A HREF="com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm"><B>GCMConstants</B></A><LI TYPE="circle">com.google.android.gcm.<A HREF="com/google/android/gcm/GCMRegistrar.html" title="class in com.google.android.gcm"><B>GCMRegistrar</B></A><LI TYPE="circle">IntentService<UL>
+<LI TYPE="circle">com.google.android.gcm.<A HREF="com/google/android/gcm/GCMBaseIntentService.html" title="class in com.google.android.gcm"><B>GCMBaseIntentService</B></A></UL>
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/client-javadoc/package-list b/docs/html/guide/google/gcm/client-javadoc/package-list
new file mode 100644
index 0000000..149691e
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/package-list
@@ -0,0 +1 @@
+com.google.android.gcm
diff --git a/docs/html/guide/google/gcm/client-javadoc/resources/inherit.gif b/docs/html/guide/google/gcm/client-javadoc/resources/inherit.gif
new file mode 100644
index 0000000..c814867
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/resources/inherit.gif
Binary files differ
diff --git a/docs/html/guide/google/gcm/client-javadoc/stylesheet.css b/docs/html/guide/google/gcm/client-javadoc/stylesheet.css
new file mode 100644
index 0000000..6ea9e51
--- /dev/null
+++ b/docs/html/guide/google/gcm/client-javadoc/stylesheet.css
@@ -0,0 +1,29 @@
+/* Javadoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF; color:#000000 }
+
+/* Headings */
+h1 { font-size: 145% }
+
+/* Table colors */
+.TableHeadingColor     { background: #CCCCFF; color:#000000 } /* Dark mauve */
+.TableSubHeadingColor  { background: #EEEEFF; color:#000000 } /* Light mauve */
+.TableRowColor         { background: #FFFFFF; color:#000000 } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
+.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
+.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
+
+/* Navigation bar fonts and colors */
+.NavBarCell1    { background-color:#EEEEFF; color:#000000} /* Light mauve */
+.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */
+.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;}
+
+.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
+.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
+
diff --git a/docs/html/guide/google/gcm/demo.jd b/docs/html/guide/google/gcm/demo.jd
new file mode 100644
index 0000000..2e1e975
--- /dev/null
+++ b/docs/html/guide/google/gcm/demo.jd
@@ -0,0 +1,259 @@
+page.title=GCM Demo Application
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Quickview</h2>
+
+<ul>
+<li>Build and run the GCM demo app.</li>
+<li>Understand how to set up both the client and server sides of a GCM app.</li>
+<li>Become familiar with the GCM helper libraries.</li>
+</ul>
+
+
+<h2>In this document</h2>
+
+<ol>
+  <li><a href="#requirements">Requirements</a> </li>
+  <li><a href="#gcm-setup">Setting Up GCM</a></li>
+  <li><a href="#server-setup">Setting Up the Server</a>
+    <ol>
+      <li><a href="#webserver-setup">Using a standard web server</a></li>
+      <li><a href="#appengine-setup">Using App Engine for Java</a></li>
+    </ol>
+  </li>
+  <li><a href="#device-setup">Setting Up the Device</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>The Google Cloud Messaging (GCM) Demo demonstrates how to use the Google Cloud Messaging framework in your Android application. This tutorial walks you through setting up and running the demo.</p>
+
+
+<p>This demo consists of the following pieces: </p>
+<ul>
+  <li>A web server containing a page where you can send messages.</li>
+  <li>An Android application that receives and displays such messages.</li>
+</ul>
+<p>Here is the API reference documentation for the helper libraries on which the demo is based:</p>
+<ul>
+  <li><a href="{@docRoot}guide/google/gcm/client-javadoc/index.html">Client Reference</a></li>
+  <li><a href="{@docRoot}guide/google/gcm/server-javadoc/index.html">Server Reference</a></li>
+</ul>
+<h2 id="requirements">Requirements</h2>
+<p>For the web server:</p>
+<ul>
+  <li> <a href="http://ant.apache.org/">Ant 1.8</a> (it might work with earlier versions, but it's not guaranteed).</li>
+  <li>One of the following:
+    <ul>
+      <li>A running web server compatible with Servlets API version 2.5, such as <a href="http://tomcat.apache.org/">Tomcat 6</a> or <a href="http://jetty.codehaus.org/">Jetty</a>, or</li>
+      <li><a href="http://code.google.com/appengine/">Java App Engine SDK</a> version 1.6 or later.</li>
+    </ul>
+  </li>
+  <li>A Google account registered to use GCM.</li>
+  <li>The API  key for that account.</li>
+</ul>
+<p>For the Android application:</p>
+<ul>
+  <li>Emulator (or device) running Android 2.2 with Google APIs.</li>
+  <li>The Google API project ID of the account registered to use GCM.</li>
+</ul>
+<h2 id="gcm-setup">Setting Up GCM</h2>
+<p>Before proceeding with the server and client setup, it's necessary to register a Google account with the Google API Console, enable Google Cloud Messaging in GCM, and obtain an API key from the <a href="https://code.google.com/apis/console">Google API Console</a>.</p>
+<p>For instructions on how to set up GCM, see <a href="gs.html">Getting Started</a>.</p>
+
+
+<h2 id="server-setup">Setting Up the Server</h2>
+<p>This section describes the different options for setting up a server.</p>
+<h3 id="webserver-setup">Using a standard web server</h3>
+<p>To set up the server using a standard, servlet-compliant web server:</p>
+<ol>
+  <li> From the SDK Manager, install <strong>Extras &gt; Google Cloud Messaging for Android Library</strong>.
+    
+    
+    <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, and <code>gcm-server</code>.</p>
+  </li>
+
+  <li>In a text editor, edit the <code>gcm-demo-server/WebContent/WEB-INF/classes/api.key</code> and replace the existing text with the API key obtained above.</li>
+  <li>In a shell window, go to the <code>gcm-demo-server</code> directory.</li>
+  <li>Generate the server's WAR file by running <code>ant war</code>:</li>
+  
+  <pre class="prettyprint">$ ant war
+
+Buildfile:build.xml
+
+init:
+   [mkdir] Created dir: build/classes
+   [mkdir] Created dir: dist
+
+compile:
+   [javac] Compiling 6 source files to build/classes
+
+war:
+     [war] Building war: <strong>dist/gcm-demo.war</strong>
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+</pre>
+  
+  <li>Deploy the <code>dist/gcm-demo.war</code> to your running server. For instance, if you're using Jetty, copy <code>gcm-demo.war</code> to the <code>webapps</code> directory of the Jetty installation.</li>
+  <li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/gcm-demo/home</code>, where <code>gcm-demo</code> is the application context and <code>/home</code> is the path of the main servlet.
+    
+  </li>
+</ol>
+<p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code> on Linux or MacOS, or <code>ipconfig</code> on Windows. </p>
+<p><img src="{@docRoot}images/gcm/gcm-demo-homepage.png" class="screenshot" /></p>
+<p> You server is now ready.</p>
+<h3 id="appengine-setup">Using App Engine for Java</h3>
+
+<p>To set up the server using a standard App Engine for Java:</p>
+<ol>
+  <li> From the SDK Manager, install <strong>Extras &gt; Google Cloud Messaging for Android Library</strong>.
+    <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, and <code>gcm-server</code>.</p>
+  </li>
+  <li>In a text editor, edit the <code>gcm-demo-appengine/src/com/google/android/gcm/demo/server/ApiKeyInitializer.java</code> and replace the existing text with the API key obtained above.
+  <p class="note"><strong>Note:</strong> The API key value set in that class will be used just once to create a persistent entity on App Engine. If you deploy the application, you can use App Engine's <code>Datastore Viewer</code> to change it later.</p>
+  
+  </li>
+  <li>In a shell window, go to the <code>gcm-api-server</code> directory.</li>
+  <li>Start the development App Engine server by <code>ant runserver</code>, using the <code>-Dsdk.dir</code> to indicate the location of the App Engine SDK and <code>-Dserver.host</code> to set your server's hostname or IP address:</li>
+
+<pre class="prettyprint">
+$ ant -Dsdk.dir=/opt/google/appengine-java-sdk runserver -Dserver.host=192.168.1.10
+Buildfile: gcm-demo-appengine/build.xml
+
+init:
+    [mkdir] Created dir: gcm-demo-appengine/dist
+
+copyjars:
+
+compile:
+
+datanucleusenhance:
+  [enhance] DataNucleus Enhancer (version 1.1.4) : Enhancement of classes
+  [enhance] DataNucleus Enhancer completed with success for 0 classes. Timings : input=28 ms, enhance=0 ms, total=28 ms. Consult the log for full details
+  [enhance] DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details
+
+runserver:
+     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.jetty.JettyLogger info
+     [java] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
+     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
+     [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/appengine-web.xml
+     [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
+     [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/web.xml
+     [java] Jun 15, 2012 8:46:09 PM com.google.android.gcm.demo.server.ApiKeyInitializer contextInitialized
+     [java] SEVERE: Created fake key. Please go to App Engine admin console, change its value to your API Key (the entity type is 'Settings' and its field to be changed is 'ApiKey'), then restart the server!
+     [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
+     [java] INFO: The server is running at http://192.168.1.10:8080/
+     [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
+     [java] INFO: The admin console is running at http://192.168.1.10:8080/_ah/admin
+</pre>
+
+  <li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/home</code>, where <code>/home</code> is the path of the main servlet.</li>
+  
+  <p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code> on Linux or MacOS, or <code>ipconfig</code> on Windows.</p>
+  
+  <p><img src="{@docRoot}images/gcm/gcm-demo-homepage-appengine.png" class="screenshot" /></p>
+</ol>
+<p> You server is now ready.</p>
+<h2 id="device-setup">Setting Up the Device</h2>
+<p>To set up the device:</p>
+<ol>
+  <li> From the SDK Manager, install <strong>Extras &gt; Google Cloud Messaging for Android Library</strong>.
+    <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, <code>gcm-server</code>, and <code>source.properties</code>.</p>
+  </li>
+  <li>Using a text editor, open  <code>gcm-demo-client/src/com/google/android/gcm/demo/app/CommonUtilities.java</code> and set the proper values for the <code>SENDER_ID</code> and <code>SERVER_URL</code> constants. For example:</li>
+
+<pre class="prettyprint pretty-java">
+static final String SERVER_URL = &quot;http://192.168.1.10:8080/gcm-demo&quot;;
+static final String SENDER_ID = &quot;4815162342&quot;;</pre>
+<p>Note that the <code>SERVER_URL</code> is the URL for the server and the application's context (or just server, if you are using App Engine), and it does not include the forward slash (<code>/</code>). Also note that <code>SENDER_ID</code> is the Google API project ID you obtained in the server setup steps above.</p>
+
+  <li>In a shell window, go to the <code>gcm-demo-client</code> directory.</li>
+  <li>Use the SDK's <code>android</code> tool to generate the <code>ant</code> build files:</li>
+
+<pre class="prettyprint">
+$ android update project --name GCMDemo -p . --target android-16
+Updated project.properties
+Updated local.properties
+Updated file ./build.xml
+Updated file ./proguard-project.txt
+</pre>
+<p>If this command fails becase <code>android-16</code> is not recognized, try a different target (as long as it is at least <code>android-15</code>).</p>
+
+<li>Use <code>ant</code> to build the application's APK file:</li>
+
+ <pre class="prettyprint">
+$ ant clean debug
+Buildfile: build.xml
+
+...
+
+
+-do-debug:
+[zipalign] Running zip align on final apk...
+    [echo] Debug Package: bin/GCMDemo-debug.apk
+[propertyfile] Creating new property file: <strong>bin/build.prop</strong>
+[propertyfile] Updating property file: bin/build.prop
+[propertyfile] Updating property file: bin/build.prop
+[propertyfile] Updating property file: bin/build.prop
+
+-post-build:
+
+debug:
+
+BUILD SUCCESSFUL
+Total time: 3 seconds
+ </pre>
+ 
+<li>Start the Android emulator:</li>
+<pre class="prettyprint">$emulator -avd my_avd
+</pre>
+
+<p> This example assumes there is an AVD (Android Virtual Device) named <code>my_avd</code> previously configured with Android 2.2 and Google APIs level 8. For more information on how to run an Android emulator, see <a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a> in the Android Developers Guide.</p>
+
+<li>Make sure there is a Google account added to the emulator. It doesn't have to be any account (like the <code>senderId</code>) in particular. </li>
+
+<p> If the emulator is running Android 4.0.4 or later, this step is optional as GCM does not require an account from this version on.</p>
+
+<li>Install the application in the emulator:</li>
+
+<pre class="prettyprint">
+$ ant installd
+Buildfile: gcm-demo-client/build.xml
+
+-set-mode-check:
+
+-set-debug-files:
+
+install:
+     [echo] Installing gcm-demo-client/bin/GCMDemo-debug.apk onto default emulator or device...
+     [exec] 1719 KB/s (47158 bytes in 0.026s)
+     [exec]   pkg: /data/local/tmp/GCMDemo-debug.apk
+     [exec] Success
+
+installd:
+
+BUILD SUCCESSFUL
+Total time: 3 seconds
+</pre>
+  <li>In the emulator, launch the GCM Demo app. The initial screen should look like this:</li>
+  <p><img src="{@docRoot}images/gcm/gcm-avd-home-auto-reg.png" class="screenshot" /></p>
+<p class="note"><strong>Note:</strong> What happened? When the device received a registration callback intent from GCM, it contacted the server to register itself, using the register servlet and passing the registration ID received from GCM; the server then saved the registration ID to use it to send messages to the phone.</p>
+<li> Now go back to your browser and refresh the page. It will show that there is one device registered:</li>
+
+<p><img src="{@docRoot}images/gcm/gcm-device-reg.png" class="screenshot" /></p>
+
+<li>Click on <strong>Send Message</strong>. The browser should show:</li>
+<p><img src="{@docRoot}images/gcm/gcm-sent-server.png" class="screenshot" /></p>
+
+<p>And in your emulator:</p>
+
+<p><img src="{@docRoot}images/gcm/gcm-avd-first-msg.png" class="screenshot" /></p>
+
+<p class="note"><strong>Note:</strong> What happened? When you clicked the button, the web server sent a message to GCM addressed to your device (more specifically, to the registration ID returned by GCM during the registration step). The device then received the message and displayed in the main activity; it also issued a system notification so the user would be notified even if the demo application was not running.</p>
+</ol>
+
diff --git a/docs/html/guide/google/gcm/gcm.jd b/docs/html/guide/google/gcm/gcm.jd
new file mode 100644
index 0000000..d871fb4
--- /dev/null
+++ b/docs/html/guide/google/gcm/gcm.jd
@@ -0,0 +1,943 @@
+page.title=GCM Architectural Overview
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Quickview</h2>
+
+<ul>
+<li>Get an introduction to key GCM terms and concepts.</li>
+<li>Learn the basic features of a GCM application.</li>
+<li>Understand the role of the 3rd-party application server, and how to send messages and process results.</li>
+</ul>
+
+
+<h2>In this document</h2>
+
+<ol class="toc">
+  <li><a href="#intro">Introduction</a> </li>
+  <li><a href="#arch">Architectural Overview</a>
+    <ol>
+      <li><a href="#lifecycle">Lifecycle Flow</a></li>
+      <li><a href="#user">What Does the User See?</a></li>
+    </ol>
+  </li>
+  <li><a href="#writing_apps">Writing Android Applications that use GCM</a>
+    <ol>
+    <li><a href="#manifest">Creating the Manifest</a></li>
+    <li><a href="#registering">Registering for GCM</a></li>
+    <li><a href="#unregistering">Unregistering from GCM</a></li>
+    <li><a href="#handling_intents">Handling Intents sent by GCM</a>
+      <ol>
+        <li><a href="#handling_reg">Handling Registration Results</a></li>
+        <li><a href="#received_data">Handling Received Data</a></li>
+      </ol>
+    </li>
+    <li><a href="#testing">Developing and Testing Your Android Applications</a></li>
+    </ol>
+  </li>
+  <li><a href="#server">Role of  the 3rd-party Application Server</a>
+    <ol class="toc">
+      <li><a href="#send-msg">Sending Messages</a>
+        <ol>
+          <li><a href="#request">Request format</a></li>
+          <li><a href="#response">Response format</a></li>
+        </ol>
+      </li>
+    </ol>
+    <li><a href="#stats">Viewing statistics</a>
+  </li>
+  <li><a href="#example">Examples</a></li>
+</ol>
+
+
+
+</div>
+</div>
+
+<p>Google Cloud Messaging for Android (GCM) is a service that helps
+developers  send data from servers to their Android applications on  Android devices. This could be a lightweight message telling the Android application that there is new data to be fetched from the server (for instance, a movie uploaded by a friend), or it could be a message containing up to 4kb of payload data (so apps like instant messaging can consume the message directly). The GCM service handles all aspects  of queueing of
+  messages and delivery to the target Android application running  on the target
+  device.</p>
+<p class="note"> To jump right into using GCM with your Android
+  applications, see the instructions in <a href="gs.html">Getting Started</a>.</p>
+
+
+
+
+<h2 id="intro">Introduction</h2>
+
+<p>Here are the primary characteristics of Google Cloud 
+Messaging (GCM):</p>
+
+<ul>
+  <li>It allows 3rd-party application servers to send messages to
+their Android applications.</li>
+  <li>GCM makes no guarantees about delivery or the order of messages.</li>
+  <li>An Android application on an Android device doesn't need to be running to receive
+messages. The system will wake up the Android application via Intent broadcast when the  message arrives, as long as the application is set up with the proper
+broadcast receiver and permissions.</li>
+  <li>It does not provide any  built-in user interface or other handling for
+message data. GCM  simply passes raw message data received straight to the
+Android application,  which has full control of how to handle it. For example, the
+application might post a notification, display a custom user interface, or 
+silently sync data.</li>
+  <li>It requires devices running Android 2.2 or higher that also have the
+Google Play Store application installed, or or an emulator running Android 2.2 with Google APIs. However, you are not limited to deploying your
+Android applications through Google Play Store.</li>
+  <li>It uses an existing connection for Google services. For pre-3.0 devices, this requires users to
+set up their Google account on their mobile devices. A Google account is not a requirement on devices running Android 4.0.4 or higher.</li>
+</ul>
+<h2 id="arch">Architectural Overview</h2>
+<p>This section gives an overview of how GCM works. </p>
+<p>This table summarizes the key terms and concepts involved in GCM. It is
+divided into these categories:</p>
+<ul>
+  <li><strong>Components</strong> &mdash; The physical entities that play a role in
+GCM.</li>
+  <li><strong>Credentials</strong> &mdash; The IDs and tokens that are used in
+different stages of GCM to ensure that all parties have been authenticated, and
+that the message is going to the correct place.</li>
+</ul>
+
+<table>
+  <tr>
+    <th colspan="2">Components</th>
+  </tr>
+  <tr>
+    <td width="165"><strong>Mobile Device</strong></td>
+    <td width="1176">The device that is running an Android application that uses
+GCM. This must be a 2.2 Android device that has Google Play Store installed, and it must
+have at least one logged in Google account if the device is running a version lower than Android 4.0.4. Alternatively, for testing you can use an emulator running Android 2.2 with Google APIs.</td>
+  </tr>
+  <tr>
+    <td><strong>3rd-party Application Server</strong></td>
+    <td>An application server that  developers  set up as part of implementing
+GCM in their applications. The 3rd-party application server sends data to an
+Android application on the device via the GCM server.</td>
+  </tr>
+  <tr>
+    <td><strong>GCM Servers</strong></td>
+    <td>The Google servers involved in taking messages from the 3rd-party
+application server and sending them to the device. </td>
+  </tr>
+  <tr>
+    <th colspan="2"><strong>Credentials</strong></th>
+  </tr>
+  <tr>
+    <td><strong>Sender ID</strong></td>
+    <td>A project ID you acquire from the API console, as described in <a href="gs.html#create-proj">Getting Started</a>. The sender
+ID is used in the <a href="#registering">registration process</a> to identify an
+Android application that is permitted to send messages to the device.</td>
+  </tr>
+  <tr>
+    <td><strong>Application ID</strong></td>
+    <td>The Android application that is registering to receive messages. The Android application
+is identified by the package name from the <a href="#manifest">manifest</a>.
+This  ensures that the messages are targeted to the correct Android application.</td>
+  </tr>
+  <tr>
+    <td><strong>Registration ID</strong></td>
+    <td>An ID issued by the GCM servers to the Android application that allows
+it to receive messages. Once the Android application has the registration ID, it sends
+it to the 3rd-party application server, which uses it to identify each device 
+that has registered to receive messages for a given Android application. In other words,
+a registration ID is tied to a particular Android application running on a particular
+device.</td>
+  </tr>
+  <tr>
+    <td><strong>Google User Account</strong></td>
+    <td>For GCM to work, the mobile device must include at least one Google account if the device is running a version lower than Android 4.0.4.</td>
+  </tr>
+  <tr>
+    <td><strong>Sender Auth Token</strong></td>
+    <td>An API key that is saved on the 3rd-party application
+server that gives the application server authorized access to Google services.
+The API key is included in the header of POST requests  that send messages.</td>
+  </tr>
+</table>
+
+<h3 id="lifecycle">Lifecycle Flow</h3>
+
+<p>Here are the primary processes involved in cloud-to-device messaging:</p>
+
+<ul>
+  <li><a href="#register">Enabling GCM</a>. An Android application running on a
+mobile device registers to receive messages.</li>
+  <li><a href="#push-process">Sending a message</a>. A 3rd-party application
+server sends messages to the device.</li>
+  <li><a href="#receiving">Receiving a message</a>. An Android application
+receives a message from a GCM server.</li>
+</ul>
+
+<p>These processes are described in more detail below.</p>
+
+<h4 id="register">Enabling GCM</h4>
+
+<p>This is the sequence of events that occurs when an Android application
+running on a mobile device registers to receive messages:<span
+class="red-text"></span></p>
+
+<ol>
+  <li>The first time the Android application needs to use the messaging service, it
+fires off a registration Intent to a GCM server. 
+    <p>This registration Intent
+(<code>com.google.android.c2dm.intent.REGISTER</code>) includes the sender ID, and the Android application ID.</p>
+<p class="note"><strong>Note:</strong> Because there is no lifecycle method that is called when the application is run for
+the first time, the registration intent should be sent on <code>onCreate()</code>, but only if the application is not registered yet.
+</p>
+  </li>
+  <li>If the registration is successful, the GCM server broadcasts a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent which gives the Android application  a registration
+ID. 
+    <p>The Android application should store this ID for later use (for instance, to check on <code>onCreate()</code> if it is already registered). 
+Note that Google may periodically refresh the registration ID, so you should design your Android application
+with the understanding that the <code>com.google.android.c2dm.intent.REGISTRATION</code> intent may be called
+multiple times. Your Android application needs to be able to respond
+accordingly.</p></li>
+  <li>To complete the registration, the Android application sends the registration ID to
+the application server. The application server typically stores the registration
+ID in a database. </li>
+</ol>
+
+<p>The registration ID lasts until the Android application explicitly unregisters
+itself, or until Google refreshes the registration ID for your Android application.</p>
+
+<p class="note"><strong>Note:</strong> When users uninstall an application, it is not automatically unregistered on GCM. It is only  unregistered when the GCM server tries to send a message to the device and the device answers that the application is uninstalled. At that point, you server should mark the device as unregistered (the server will receive a <code><a href="#unreg_device">NotRegistered</a></code> error).
+  <p>
+Note that it might take a few minutes for the registration ID to be completed removed from the GCM server. So if the 3rd party server sends a message during this time, it will get a valid message ID, even though the message will not be delivered to the device.</p>
+</p>
+
+<h4 id="push-process">Sending a Message</h4>
+
+<p>For an application server to send a  message to an Android application, the following things must be in
+place:</p>
+
+<ul>
+  <li>The Android application has a registration ID that allows it to receive messages
+for a particular device.</li>
+  <li>The 3rd-party application server has stored the registration ID.</li>
+
+
+
+<li>An API key. This is something that the developer must have already
+set up on the application server for the Android application (for more discussion, see
+<a href="#server">Role of the 3rd-party Application Server</a>). Now it will
+get used to send messages to the device. </li>
+</ul>
+
+<p>Here is the sequence of events that occurs when the application server sends a 
+message:</p>
+
+<ol>
+  <li>The application server sends a  message to  GCM servers.</li>
+  <li>Google enqueues and stores the message in case the device is
+offline.</li>
+  <li>When the device is online, Google sends the message to the device. </li>
+  <li>On the device, the system  broadcasts the  message to the specified
+Android application via Intent broadcast with proper permissions, so that only the
+targeted Android application gets the message. This wakes the Android application up. The
+Android application does not need to be running beforehand to receive the message.</li>
+  <li>The Android application processes the message. If the Android application is doing
+non-trivial processing, you may want to grab a {@link android.os.PowerManager.WakeLock} and do any processing in a Service.</li>
+</ol>
+
+<p> An Android application can  unregister GCM if it no longer wants to receive 
+messages.</p>
+
+<h4 id="receiving">Receiving a Message</h4>
+
+<p>This is the sequence of events that occurs when an Android application
+installed on a mobile device receives a message:</p>
+
+<ol>
+  <li>The system receives the incoming message and extracts the raw key/value
+pairs from the message payload, if any.</li>
+  <li>The system passes the key/value pairs to the targeted Android application
+in a <code>com.google.android.c2dm.intent.RECEIVE</code> Intent as a set of
+extras.</li>
+  <li>The Android application extracts the raw data
+from the <code>com.google.android.c2dm.intent.RECEIVE</code><code> </code>Intent by key and processes the data.</li>
+</ol>
+
+<h3 id="user">What Does the User See?</h3>
+
+<p>When mobile device users install Android applications that include GCM, the Google Play Store will inform them that the Android application
+includes GCM. They must approve the use of this feature to install the
+Android application. </p>
+
+<h2 id="writing_apps">Writing Android Applications that Use GCM</h2>
+
+<p>To write Android applications that use GCM, you must have an application
+server that can perform the tasks described in <a href="#server">Role of the
+3rd-party Application Server</a>. This section describes the steps you take to
+create a client application that uses GCM.</p>
+
+<p>Remember that there is no user interface associated with  GCM.
+However you choose to process messages in your Android application is up to you.</p>
+
+<p>There are two primary steps involved in writing a client Android application:</p>
+
+<ul>
+  <li>Creating a manifest that contains the permissions the Android application needs to
+use GCM.</li>
+  <li>Implementing your  code. To use GCM, this implementation must
+include:
+    <ul>
+      <li>Code to start and stop the registration service.</li>
+      <li>Receivers for the <code>com.google.android.c2dm.intent.RECEIVE</code> and <code>com.google.android.c2dm.intent.REGISTRATION</code> intents.</li>
+    </ul>
+  </li>
+</ul>
+
+<h3 id="manifest">Creating the Manifest</h3>
+
+<p>Every Android application must have an <code>AndroidManifest.xml</code> file (with
+precisely that name) in its root directory. The manifest presents essential
+information about the Android application to the Android system, information the
+system must have before it can run any of the Android application's code (for more
+discussion of the manifest file, see the <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Android Developers Guide</a>. To use the GCM feature, the
+manifest must include the following:</p>
+
+<ul>
+  <li>The <code>com.google.android.c2dm.permission.RECEIVE</code> permission so the Android application can register and receive messages.</li>
+  <li>The <code>android.permission.INTERNET</code> permission so the Android application can send the registration ID to the 3rd party server.</li>
+  <li>The <code>android.permission.GET_ACCOUNTS</code> permission as GCM requires a Google account (necessary only if if the device is running a version lower than Android 4.0.4)</li>
+  <li>The <code>android.permission.WAKE_LOCK</code> permission so the application can keep the processor from sleeping when a message is received.</li>
+  <li>An <code>applicationPackage + &quot;.permission.C2D_MESSAGE</code> permission to prevent other Android applications from registering and receiving the Android application's
+messages. The permission name must exactly match this pattern&mdash;otherwise the Android application will not receive the messages.</li>
+  <li>A receiver for <code>com.google.android.c2dm.intent.RECEIVE</code> and <code>com.google.android.c2dm.intent.REGISTRATION</code>, with the category set
+as <code>applicationPackage</code>. The receiver should require the <code>com.google.android.c2dm.SEND</code> permission, so that only the GCM
+Framework can send a message to it. Note that both registration and the receiving
+of messages are implemented as <a href="{@docRoot}guide/components/intents-filters.html">Intents</a>.</li>
+  <li>An intent service to handle the intents received by the broadcast receiver.</li>
+  <li>If the GCM feature is critical to the Android application's function, be sure to
+set <code>android:minSdkVersion=&quot;8&quot;</code> in the manifest. This
+ensures that the Android application cannot be installed in an environment in which it
+could not run properly. </li>
+</ul>
+
+<p>Here are excerpts from a manifest that supports GCM:</p>
+
+<pre class="prettyprint pretty-xml">
+&lt;manifest package="com.example.gcm" ...&gt;
+
+    &lt;uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/&gt;
+    &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
+    &lt;uses-permission android:name="android.permission.GET_ACCOUNTS" /&gt;
+    &lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;
+    &lt;uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /&gt;
+
+    &lt;permission android:name="com.example.gcm.permission.C2D_MESSAGE" 
+        android:protectionLevel="signature" /&gt;
+    &lt;uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" /&gt;
+
+    &lt;application ...&gt;
+        &lt;receiver
+            android:name=".MyBroadcastReceiver"
+            android:permission="com.google.android.c2dm.permission.SEND" &gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name="com.google.android.c2dm.intent.RECEIVE" /&gt;
+                &lt;action android:name="com.google.android.c2dm.intent.REGISTRATION" /&gt;
+                &lt;category android:name="com.example.gcm" /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/receiver&gt;
+        &lt;service android:name=".MyIntentService" /&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;
+</pre>
+<h3 id="registering">Registering for GCM</h3>
+
+<p>An Android application needs to register with GCM servers before it can receive messages. To register, the application sends an Intent
+(<code>com.google.android.c2dm.intent.REGISTER</code>), with 2 extra parameters:
+</p>
+
+<ul>
+  <li><code>sender</code> is the project ID of the account authorized to send messages
+to the Android application. </li>
+  <li><code>app</code> is the Android application's ID, set with a <code>PendingIntent</code> to
+allow the registration service to extract Android application information. </li>
+</ul>
+
+<p>For example:</p>
+
+<pre class="prettyprint pretty-java">Intent registrationIntent = new Intent(&quot;com.google.android.c2dm.intent.REGISTER&quot;);
+// sets the app name in the intent
+registrationIntent.putExtra(&quot;app&quot;, PendingIntent.getBroadcast(this, 0, new Intent(), 0));
+registrationIntent.putExtra(&quot;sender&quot;, senderID);
+startService(registrationIntent);</pre>
+
+<p>This intent will be asynchronously sent to the GCM server, and the response will be delivered to
+the application as a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent containing
+the registration ID assigned to the Android application running on that particular device.</p>
+
+<p>Registration is not complete until the Android application sends the registration ID
+to the 3rd-party application server, which in turn will use the registration ID to send
+messages to the application.</p>
+
+<h3 id="unregistering">Unregistering from GCM</h3>
+
+<p>To unregister from GCM, do the following:</p>
+
+<pre class="prettyprint pretty-java">Intent unregIntent = new Intent(&quot;com.google.android.c2dm.intent.UNREGISTER&quot;);
+unregIntent.putExtra(&quot;app&quot;, PendingIntent.getBroadcast(this, 0, new Intent(), 0));
+startService(unregIntent);
+</pre>
+
+<p>Similar to the registration request, this intent is sent asynchronously, and the response comes as a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent.
+
+
+<h3 id="handling_intents">Handling Intents sent by GCM</h3>
+
+<p>As discussed in <a href="#manifest">Creating the Manifest</a>, the manifest
+defines a broadcast receiver for the <code>com.google.android.c2dm.intent.REGISTRATION</code> and <code>com.google.android.c2dm.intent.RECEIVE</code> intents.
+These <a href="{@docRoot}guide/components/intents-filters.html">intents</a> are sent by GCM to indicate that a device was registered (or unregistered), or to deliver messages, respectively.</p>
+
+<p>Handling these intents might require I/O operations (such as network calls to the 3rd party server), and 
+such operations should not be done in the receiver's <code>onReceive()</code> method.
+You may be tempted to spawn a new thread directly, but there are no guarantees that the process will run long enough for the thread to finish the work.  
+Thus the recommended way to handle the intents is to delegate them to a service, such as an {@link android.app.IntentService}. 
+For example:</p>
+
+
+<pre class="prettyprint pretty-java">
+public class MyBroadcastReceiver extends BroadcastReceiver {
+
+    &#64;Override
+    public final void onReceive(Context context, Intent intent) {
+        MyIntentService.runIntentInService(context, intent);
+        setResult(Activity.RESULT_OK, null, null);
+    }
+}
+</pre>
+
+<p>Then in <code>MyIntentService</code>:</p>
+<pre class="prettyprint pretty-java">
+public class MyIntentService extends IntentService {
+
+    private static PowerManager.WakeLock sWakeLock;
+    private static final Object LOCK = MyIntentService.class;
+    
+    static void runIntentInService(Context context, Intent intent) {
+        synchronized(LOCK) {
+            if (sWakeLock == null) {
+                PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+                sWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "my_wakelock");
+            }
+        }
+        sWakeLock.acquire();
+        intent.setClassName(context, MyIntentService.class.getName());
+        context.startService(intent);
+    }
+    
+    &#64;Override
+    public final void onHandleIntent(Intent intent) {
+        try {
+            String action = intent.getAction();
+            if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) {
+                handleRegistration(intent);
+            } else if (action.equals("com.google.android.c2dm.intent.RECEIVE")) {
+                handleMessage(intent);
+            }
+        } finally {
+            synchronized(LOCK) {
+                sWakeLock.release();
+            }
+        }
+    }
+}
+</pre>
+
+<p class="note"><strong>Note:</strong> your application must acquire a wake lock before starting the service&mdash;otherwise the device could be put to sleep before the service is started.</p>
+
+<h4 id="handling_reg">Handling Registration Results</h4>
+
+<p>When a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent is received, it could potentially contain 3 extras: <code>registration_id</code>, <code>error</code>, and <code>unregistered</code>.
+
+<p>When a registration succeeds, <code>registration_id</code> contains the registration ID and the other extras are not set. 
+The application must ensure that the 3rd-party server receives the registration ID. It may do so by saving the registration ID and sending it to the server. 
+If the network is down or there are errors, the application should retry sending the registration ID when the network is up again or the next time it starts.</p>
+
+<p class="note"><strong>Note:</strong> Although the <code>com.google.android.c2dm.intent.REGISTRATION</code> intent is typically received after a request was made by the application, 
+Google may periodically refresh the registration ID. So the application must be prepared to handle it at any time.</p>
+
+<p>When an unregistration succeeds, only the <code>unregistered</code> extra is set, and similar to the registration workflow, 
+the application must contact the 3rd-party server to remove the registration ID (note that the registration ID is not available in the intent, 
+but the application should have saved the registration ID when it got it).<p>
+
+<p>If the application request (be it register or unregister) fails, the <code>error</code> will be set with an error code, and the other extras will not be set. 
+
+Here are the possible error codes:</p>
+
+<table>
+  <tr>
+    <th>Error Code</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td><code>SERVICE_NOT_AVAILABLE</code></td>
+    <td>The device can't read the response, or there was a 500/503 from the
+server that can be retried later. The Android application should use exponential back-off and retry. See <a href="adv.html#retry">Advanced Topics</a> for more information. </td>
+  </tr>
+  <tr>
+    <td><code>ACCOUNT_MISSING</code></td>
+    <td>There is no Google account on the phone.  The Android application should ask the
+user to open the account manager and add a Google account. Fix on the device
+side.</td>
+  </tr>
+  <tr>
+    <td><code>AUTHENTICATION_FAILED</code></td>
+    <td>Bad Google Account password. The Android application should ask the user to enter his/her Google Account
+password, and let the user retry manually later. Fix on the device side.</td>
+  </tr>
+  <tr>
+    <td><code>INVALID_SENDER</code></td>
+    <td>The sender account is not recognized. This must be fixed on the Android application side. The developer must fix the application to provide the right <code>sender</code> extra in the <code>com.google.android.c2dm.intent.REGISTER</code> intent.</td>
+  </tr>
+  <tr>
+    <td><code>PHONE_REGISTRATION_ERROR</code></td>
+    <td> Incorrect phone registration with Google. This
+phone doesn't currently support GCM.</td>
+  </tr>
+  <tr>
+    <td><code>INVALID_PARAMETERS</code></td>
+    <td>The  request sent by the phone does not contain the expected parameters. This phone doesn't currently support GCM.</td>
+  </tr>
+</table>
+
+
+
+
+<p>Here's an example on how to handle the registration in the <code>MyIntentService</code> example:</p>
+
+<pre class="prettyprint pretty-java">
+private void handleRegistration(Intent intent) {
+    String registrationId = intent.getStringExtra("registration_id");
+    String error = intent.getStringExtra("error");
+    String unregistered = intent.getStringExtra("unregistered");       
+    // registration succeeded
+    if (registrationId != null) {
+        // store registration ID on shared preferences
+        // notify 3rd-party server about the registered ID
+    }
+        
+    // unregistration succeeded
+    if (unregistered != null) {
+        // get old registration ID from shared preferences
+        // notify 3rd-party server about the unregistered ID
+    } 
+        
+    // last operation (registration or unregistration) returned an error;
+    if (error != null) {
+        if ("SERVICE_NOT_AVAILABLE".equals(error)) {
+           // optionally retry using exponential back-off
+           // (see <a href="adv.html#retry">Advanced Topics</a>)
+        } else {
+            // Unrecoverable error, log it
+            Log.i(TAG, "Received error: " + error);
+        }
+    }
+}</pre>
+
+<h4 id="received_data">Handling Received Data</h4>
+
+<p>The <code>com.google.android.c2dm.intent.RECEIVE</code> intent is used by GCM to 
+deliver the messages sent by the 3rd-party server to the application running in the device.
+If the server included key-pair values in the <code>data</code> parameter, they are available as 
+extras in this intent, with the keys being the extra names.
+
+<p>Here is an example, again using the <code>MyIntentReceiver</code> class:</p>
+
+<pre class="prettyprint pretty-java">
+private void handleMessage(Intent intent) {
+    // server sent 2 key-value pairs, score and time
+    String score = intent.getExtra("score");
+    String time = intent.getExtra("time");
+    // generates a system notification to display the score and time
+}</pre>
+
+<h3 id="testing">Developing and Testing Your Android Applications</h3>
+
+<p>Here are some guidelines for developing and testing an Android application
+that uses the GCM feature:</p>
+
+<ul>
+  <li>To develop and test your Android applications, you need to run and debug the
+applications on an Android 2.2 system image that includes the necessary
+underlying Google services. </li>
+  <li>To develop and debug on an actual device, you need a device running an
+Android 2.2 system image that includes the Google Play Store application. </li>
+  <li>To develop and test on the Android Emulator, you need to download the
+Android 2.2 version of the Google APIs Add-On into your SDK using the <em>Android
+SDK and AVD Manager</em>. Specifically, you need to download the component named
+&quot;Google APIs by Google Inc, Android API 8&quot;. Then, you need to set up
+an AVD that uses that system image. </li>
+  <li>If the GCM feature is critical to the Android application's function, be sure to
+set <code>android:minSdkVersion=&quot;8&quot;</code> in the manifest. This
+ensures that the Android application cannot be installed in an environment in which it
+could not run properly. </li>
+</ul>
+
+<h2 id="server">Role of the 3rd-party Application Server</h2>
+
+<p>Before you can write client Android applications that use the GCM feature, you must
+have an  application server that meets the following criteria:</p>
+
+<ul>
+  <li>Able to communicate with your client.</li>
+  <li>Able to  fire off HTTPS requests to the GCM server.</li>
+  <li>Able to handle requests and resend then as needed, using <a href="http://en.wikipedia.org/wiki/Exponential_backoff">exponential back-off.</a></li>
+  <li>Able to store the API key and client registration IDs. The
+API key is included in the header of POST requests that send
+messages.</li>
+</ul>
+
+<h3 id="send-msg">Sending Messages</h3>
+<p>This section describes how the 3rd-party application server sends messages to one or more mobile devices. Note the following:</p>
+<ul>
+  <li>A 3rd-party application server can either send messages to a single device or to multiple devices. A message sent to multiple devices simultaneously is called a <em>multicast message</em>.</li>
+  
+  <li>You have 2 choices in how you construct requests and responses: plain text or JSON.</li>
+  <li>However, to send multicast messages, you must use JSON. Plain text will not work.</li>
+</ul>
+<p>Before the 3rd-party application server can send a  message to an
+  Android application, it must have received a registration ID from it.</p>
+<h4 id="request">Request format</h4>
+<p>To send a  message, the application server issues a POST request to <code>https://android.googleapis.com/gcm/send</code>.</p>
+<p>A  message request is made of 2 parts: HTTP header and HTTP body.</p>
+
+<p>The HTTP header must contain the following headers:</p>
+<ul>
+  <li><code>Authorization</code>: key=YOUR_API_KEY</li>
+  <li><code>Content-Type</code>: <code>application/json</code> for JSON; <code>application/x-www-form-urlencoded;charset=UTF-8</code> for plain text.
+  </li>
+</ul>
+
+<p>For example:
+</p>
+<pre>Content-Type:application/json
+Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA
+
+{
+  "registration_id" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
+  "data" : {
+    ...
+  },
+}</pre>
+<p class="note">
+  <p><strong>Note:</strong> If <code>Content-Type</code> is omitted, the format is assumed to be plain text.</p>
+</p>
+
+<p>The HTTP body content depends on whether you're using JSON or plain text. For JSON, it must contain a string representing a JSON object with the following fields:</p>
+<table>
+  <tr>
+    <th>Field</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td><code>registration_ids</code></td>
+    <td>A string array with the list of devices (registration IDs) receiving the message. It must contain at least 1 and at most 1000 registration IDs. To send a multicast message, you must use JSON. For sending a single message to a single device, you could use a JSON object with just 1 registration id, or plain text (see below). Required.</td>
+  </tr>
+  <tr>
+    <td><code>collapse_key</code></td>
+    <td>An arbitrary string (such as &quot;Updates Available&quot;) that is used to collapse a group of like messages
+when the device is offline, so that only the last message gets sent to the
+client. This is intended to avoid sending too many messages to the phone when it
+comes back online. Note that since there is no guarantee of the order in which
+messages get sent, the &quot;last&quot; message may not actually be the last
+message sent by the application server. See <a href="adv.html#collapsible">Advanced Topics</a> for more discussion of this topic. Optional, unless you are using the <code>time_to_live</code> parameter&mdash;in that case, you must also specify a <code>collapse_key</code>.</td>
+  </tr>
+  <tr>
+    <td><code>data</code></td>
+    <td>A JSON object whose fields represents the key-value pairs of the message's payload data. If present, the payload data it will be
+included in the Intent as application data, with the key being the extra's name. For instance, <code>"data":{"score":"3x1"}</code> would result in an intent extra named <code>score</code> whose value is the string <code>3x1</code>
+There is no limit on the number of key/value pairs, though there is a limit on the total size of the message. Optional.</td>
+  </tr>
+  <tr>
+    <td><code>delay_while_idle</code></td>
+    <td>If included, indicates that the message should not be sent immediately
+if the device is idle. The server will wait for the device to become active, and
+then only the last message for each <code>collapse_key</code> value will be
+sent. Optional. The default value is <code>false</code>, and must be a JSON boolean.</td>
+  </tr>
+  <tr>
+    <td><code>time_to_live</code></td>
+    <td>How long (in seconds) the message should be kept on GCM storage if the device is offline. Optional (default time-to-live is 4 weeks, and must be set as a JSON number). If you use this parameter, you must also specify a <code>collapse_key</code>.</td>
+  </tr>
+</table>
+
+<p>If you are using plain text instead of JSON, the message fields must be set as HTTP parameters sent in the body, and their syntax is slightly different, as described below:
+<table>
+  <tr>
+    <th>Field</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td><code>registration_id</code></td>
+    <td>Must contain the registration ID of the single device receiving the message. Required.</td>
+  </tr>
+  <tr>
+    <td><code>collapse_key</code></td>
+    <td>Same as JSON (see previous table). Optional.</td>
+  </tr>
+  <tr>
+    <td><code>data.&lt;key&gt;</code></td>
+    <td>Payload data, expressed as parameters prefixed with <code>data.</code> and suffixed as the key. For instance, a parameter of <code>data.score=3x1</code> would result in an intent extra named <code>score</code> whose value is the string <code>3x1</code>. There is no limit on the number of key/value parameters, though there is a limit on the total size of the  message. Optional.</td>
+  </tr>
+  <tr>
+    <td><code>delay_while_idle</code></td>
+    <td>Should be represented as <code>1</code> or <code>true</code> for <code>true</code>, anything else for <code>false</code>. Optional. The default value is <code>false</code>.</td>
+  </tr>
+  <tr>
+    <td><code>time_to_live</code></td>
+    <td>Same as JSON (see previous table). Optional.</td>
+  </tr>
+</table>
+
+
+
+  <h4 id="example-requests">Example requests</h4>
+  <p>Here is the smallest possible request (a message without any parameters and just one recipient) using JSON:</p>
+  <pre class="prettyprint pretty-json">{ &quot;registration_ids&quot;: [ &quot;42&quot; ] }</pre>
+  
+  <p>And here the same example using plain text:</p>
+  <pre class="prettyprint">registration_id=42</pre>
+  
+  <p> Here is a message with a payload and 6 recipients:</p>
+  <pre class="prettyprint pretty-HTML">{ "data": {
+    "score": "5x1",
+    "time": "15:10"
+  },
+  "registration_ids": ["4", "8", "15", "16", "23", "42"]
+}</pre>
+  <p>Here is a message with all optional fields set and 6 recipients:</p>
+  <pre class="prettyprint pretty-json">{ "collapse_key": "score_update",
+  "time_to_live": 108,
+  "delay_while_idle": true,
+  "data": {
+    "score": "4x8",
+    "time": "15:16.2342"
+  },
+  "registration_ids":["4", "8", "15", "16", "23", "42"]
+}</pre>
+  <p>And here is the same message using plain-text format (but just 1 recipient):  </p>
+  
+  <pre class="prettyprint">collapse_key=score_update&amp;time_to_live=108&amp;delay_while_idle=1&amp;data.score=4x8&amp;data.time=15:16.2342&amp;registration_id=42
+  </pre>
+
+  <p class="note"><strong>Note:</strong> If your organization has a firewall that restricts the traffic to or from the Internet, you'll need to configure it to allow connectivity with GCM. The ports to open are: 5228, 5229, and 5230. GCM typically only uses 5228, but it sometimes uses 5229 and 5230.
+GCM doesn't provide specific IPs. It changes IPs frequently. We recommend against using ACLs but if you must use them, take a broad approach such as the method suggested in <a href="http://support.google.com/code/bin/answer.py?hl=en&answer=62464">this support link</a>.
+</p>
+
+<h4 id="response">Response format</h4>
+
+<p>There are two possible outcomes when trying to send a message:</p>
+<ul>
+  <li>The message is processed successfully.</li>
+  <li>The GCM server rejects the request.</li>
+</ul>
+
+<p>When the messge is processed successfully, the HTTP response has a 200 status and the body contains more information about the status of the message (including possible errors). When the request is rejected, 
+the HTTP response contains a non-200 status code (such as 400, 401, or 503).</p>
+
+<p>The following table summarizes the statuses that the HTTP response header might contain. Click the troubleshoot link for advice on how to deal with each type of error.</p>
+<table border=1>
+  <tr>
+    <th>Response</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td>200</td>
+    <td>Message was processed successfully. The response body will contain more details about the message status, but its format will depend whether the request was JSON or plain text. See <a href="#success">Interpreting a success response</a> for more details.</td>
+  </tr>
+  <tr>
+    <td>400</td>
+    <td><span id="internal-source-marker_0.2">Only applies for JSON requests. Indicates that the request could not be parsed as JSON, or it contained invalid fields (for instance, passing a string where a number was expected). The exact failure reason is described in the response and the problem should be addressed before the request can be retried.</td>
+  </tr>
+  <tr>
+    <td>401</td>
+    <td>There was an error authenticating the sender account. <a href="#auth_error">Troubleshoot</a></td>
+  </tr>
+  <tr>
+    <td>500</td>
+    <td>There was an internal error in the GCM server while trying to process the request. <a href="#internal_error">Troubleshoot</a></td>
+  </tr>
+  <tr>
+    <td>503</td>
+    <td>Indicates that the server is temporarily unavailable (i.e., because of timeouts, etc ). Sender must retry later, honoring any <code>Retry-After</code> header
+      included in the response. Application servers must implement exponential back-off. The GCM server took too long to process the request. <a href="#internal_error">Troubleshoot</a></td>
+  </tr>
+</table>
+
+<h4 id="success">Interpreting a success response</h4>
+<p>When a JSON request is successful (HTTP status code 200), the response body contains a JSON object with the following fields:</p>
+<table>
+  <tr>
+    <th>Field</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td><code>multicast_id</code></td>
+    <td>Unique ID (number) identifying the multicast message.</td>
+  </tr>
+  <tr>
+    <td><code>success</code></td>
+    <td>Number of messages that were processed without an error.</td>
+  </tr>
+  <tr>
+    <td><code>failure</code></td>
+    <td>Number of messages that could not be processed.</td>
+  </tr>
+  <tr>
+    <td><code>canonical_ids</code></td>
+    <td>Number of results that contain a canonical registration ID. See <a href="adv.html#canonical">Advanced Topics</a> for more discussion of this topic.</td>
+  </tr>
+  <tr>
+    <td><code>results</code></td>
+    <td>Array of objects representing the status of the messages processed. The objects are listed in the same order as the request (i.e., for each registration ID in the request, its result is listed in the same index in the response) and they can have these fields:<br>
+      <ul>
+        <li><code>message_id</code>: String representing the message when it was successfully processed.</li>
+        <li><code>registration_id</code>: If set,  means that GCM processed the message but it has another canonical registration ID for that device, so sender should replace the IDs on future requests (otherwise they might be rejected). This field is never set if there is an error in the request.<br />
+        </li>
+        <li><code>error</code>: String describing an error that occurred while processing the message for that recipient. The possible values are the same as documented in the above table, plus &quot;Unavailable&quot;  (meaning GCM servers were busy and could not process the message for that  particular recipient, so it could be retried).</li>
+    </ul></td>
+  </tr>
+</table>
+<p>If the value of <code>failure</code> and <code>canonical_ids</code> is 0, it's not necessary to parse the remainder of the response. Otherwise, we recommend that you iterate through the results field and do the following for each object in that list:</p>
+<ul>
+  <li>If <code>message_id</code> is set, check for <code>registration_id</code>:
+    <ul>
+      <li>If <code>registration_id</code> is set, replace the original ID with the new value (canonical ID) in your server database. Note that the original ID is not part of the result, so you need to obtain it from the list of <code>registration_ids</code> passed in the request (using the same index).</li>
+    </ul>
+  </li>
+  <li>Otherwise, get the value of <code>error</code>:
+    <ul>
+      <li>If it is <code>Unavailable</code>, you could retry to send it in another request.</li>
+      <li>If it is <code>NotRegistered</code>, you should remove the registration ID from your server database because the application was uninstalled from the device.</li>
+      <li>Otherwise, there is something wrong in the registration ID passed in the request; it is probably a non-recoverable error that will also require removing the registration from the server database. See <a href="#error_codes">Interpreting an error response</a> for all possible error values.</li>
+    </ul>
+  </li>
+</ul>
+
+<p>When a plain-text request is successful (HTTP status code 200), the response body contains 1 or 2 lines in the form of key/value pairs.
+The first line is always available and its content is either <code>id=<em>ID of sent message</em></code> or <code>Error=<em>GCM error code</em></code>. The second line, if available, 
+has the format of <code>registration_id=<em>canonical ID</em></code>. The second line is optional, and it can only be sent if the first line is not an error. We recommend handling the plain-text response in a similar way as handling the JSON response:</p>
+<ul>
+  <li>If first line starts with <code>id</code>, check second line:
+    <ul>
+      <li>If second line starts with <code>registration_id</code>, gets its value and replace the registration IDs in your server database.</li>
+    </ul>
+  </li>
+  <li>Otherwise, get the value of <code>Error</code>:
+    <ul>
+      <li>If it is <code>NotRegistered</code>, remove the registration ID from your server database.</li>
+      <li>Otherwise, there is probably a non-recoverable error (<strong>Note: </strong>Plain-text requests will never return <code>Unavailable</code> as the error code, they would have returned a 500 HTTP status instead).</li>
+    </ul>
+  </li>
+</ul>
+
+<h4 id="error_codes">Interpreting an error response</h4>
+<p>Here are the recommendations for handling the different types of error that might occur when trying to send a message to a device:</p>
+
+<dl>
+<dt id="missing_reg"><strong>Missing Registration ID</strong></dt>
+<dd>Check that the request contains a registration ID (either in the <code>registration_id</code> parameter in a plain text message, or in the <code>registration_ids</code> field in JSON). 
+<br/>Happens when error code is <code>MissingRegistration</code>.</dd>
+<dt id="invalid_reg"><strong>Invalid Registration ID</strong></dt>
+<dd>Check the formatting of the registration ID that you pass to the server. Make sure it matches the registration ID the phone receives in the <code>com.google.android.c2dm.intent.REGISTRATION</code> intent and that you're not truncating it or adding additional characters. 
+<br/>Happens when error code is <code>InvalidRegistration</code>.</dd>
+<dt id="mismatched_sender"><strong>Mismatched Sender</strong></dt>
+<dd>A registration ID is tied to a certain group of senders. When an application registers for GCM usage, it must specify which senders are allowed to send messages. Make sure you're using one of those when trying to send messages to the device. If you switch to a different sender, the existing registration IDs won't work. 
+Happens when error code is <code>MismatchSenderId</code>.</dd>
+<dt id="unreg_device"><strong>Unregistered Device</strong></dt>
+<dd>An existing registration ID may cease to be valid in a number of scenarios, including:
+<ul>
+  <li>If the application manually unregisters by issuing a <span class="prettyprint pretty-java"><code>com.google.android.c2dm.intent.UNREGISTER</code></span><code> </code>intent.</li>
+  <li>If the application is automatically unregistered, which can happen (but is not guaranteed) if the user uninstalls the application.</li>
+  <li>If the registration ID expires. Google might decide to refresh registration IDs. </li>
+</ul>
+For all these cases, you should remove this registration ID from the 3rd-party server and stop using it to send 
+messages. 
+<br/>Happens when error code is <code>NotRegistered</code>.</dd>
+  <dt id="big_msg"><strong>Message Too Big</strong></dt>
+  <dd>The total size of the payload data that is included in a message can't exceed 4096 bytes. Note that this includes both the size of the keys as well as the values. 
+<br/>Happens when error code is <code>MessageTooBig</code>.</dd>
+  <dt id="auth_error"><strong>Authentication Error</strong></dt>
+  <dd>The sender account that you're trying to use to send a message couldn't be authenticated. Possible causes are: request could not be parsed as JSON, or it contained invalid fields (for instance, passing a string where a number was expected).  The exact failure reason is described in the response and the problem should be addressed before the request can be retried. Possible causes are: authorization header missing or with invalid syntax, invalid project ID sent as key, key valid but with GCM service disabled, and so on. Check that the Sender Auth Token you're sending inside the <code>Authorization</code> header is the correct API key associated with your project. 
+<br/>Happens when the HTTP status code is 401.
+  </dd>
+  <dt id="internal_error"><strong>Internal Server Error/Timeout</strong></dt>
+  <dd>The server encountered an error while trying to process the request or couldn't finish in time. You can retry the same request, but you MUST obey the following requirements:  
+<ul>
+  <li>Honor the <code>Retry-After</code> header if it's included in the response from the GCM server.</li>
+  <li>Implement exponential back-off in your retry mechanism. This means an exponentially increasing delay after each failed retry (e.g. if you waited one second before the first retry, wait at least two second before the next one, then 4 seconds and so on). If you're sending multiple messages, delay each one independently by an additional random amount to avoid issuing a new request for all messages at the same time.</li>
+</ul>
+Senders that cause problems risk being blacklisted.
+<br/>Happens when the HTTP status code is 500 or 503; or when the <code>error</code> field of a JSON object in the <code>results</code> array is <code>Unavailable</code>.
+</dd>
+</dl>
+<h4>Example responses</h4>
+<p>This section shows a few examples of responses indicating messages that were processed successfully. See <a href="#example-requests">Example requests</a> for the requests these responses are based on.</p>
+<p> Here is a simple case of a JSON message successfully sent to one recipient without canonical IDs in the response:</p>
+<pre class="prettyprint pretty-json">{ "multicast_id": 108,
+  "success": 1,
+  "failure": 0,
+  "canonical_ids": 0,
+  "results": [
+    { "message_id": "1:08" }
+  ]
+}</pre>
+
+<p>Or if the request was in plain-text format:</p>
+<pre class="prettyprint">id=1:08
+</pre>
+
+<p>Here are JSON results for 6 recipients (IDs 4, 8, 15, 16, 23, and 42 respectively) with 3 messages successfully processed, 1 canonical registration ID returned, and 3 errors:</p>
+<pre class="prettyprint pretty-json">{ "multicast_id": 216,
+  "success": 3,
+  "failure": 3,
+  "canonical_ids": 1,
+  "results": [
+    { "message_id": "1:0408" },
+    { "error": "Unavailable" },
+    { "error": "InvalidRegistration" },
+    { "message_id": "1:1516" },
+    { "message_id": "1:2342", "registration_id": "32" },
+    { "error": "NotRegistered"}
+  ]
+}
+</pre>
+<p> In this example:</p>
+<ul>
+  <li>First message: success, not required.</li>
+  <li>Second message: should be resent (to registration ID 8).</li>
+  <li>Third message: had an unrecoverable error (maybe the value got corrupted in the database).</li>
+  <li>Fourth message: success, nothing required.</li>
+  <li>Fifth message: success, but the registration ID should be updated in the server database (from 23 to 32).</li>
+  <li>Sixth message: registration ID (42) should be removed from the server database because the application was uninstalled from the device.</li>
+</ul>
+<p>Or if just the 4th message above was sent using plain-text format:</p>
+<pre class="prettyprint">Error=InvalidRegistration
+</pre>
+<p>If the 5th message above was also sent using plain-text format:</p>
+<pre class="prettyprint">id=1:2342
+registration_id=32
+</pre>
+
+
+<h3 id="stats">Viewing statistics</h3>
+
+<p>To view  statistics and any error messages for your GCM applications:</p>
+<ol>
+  <li> Go to <code><a href="http://play.google.com/apps/publish">play.google.com/apps/publish</a></code>.</li>
+  <li>Login with your developer account. 
+  <p>You will see a page that has a list of all of your apps.</p></li>
+  <li> Click on the &quot;statistics&quot; link next to the app for which you want to view GCM stats. 
+  <p>Now you are on the statistics page.</p> </li>
+  <li>Go to the drop-down menu and select the GCM metric you want to view. 
+  </li>
+</ol>
+<h2 id="example">Examples</h2>
+<p>See the <a href="demo.html">GCM Demo Application</a> document.</p>
+
diff --git a/docs/html/guide/google/gcm/gs.jd b/docs/html/guide/google/gcm/gs.jd
new file mode 100644
index 0000000..5e426c2
--- /dev/null
+++ b/docs/html/guide/google/gcm/gs.jd
@@ -0,0 +1,203 @@
+page.title=GCM: Getting Started
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Quickview</h2>
+
+<ul>
+<li>Walk through the steps of creating a GCM app.</li>
+</ul>
+
+
+<h2>In this document</h2>
+
+<ol class="toc">
+<li><a href="#create-proj">Creating a Google API Project</a></li>
+<li><a href="#gcm-service">Enabling the GCM Service</a></li>
+<li><a href="#access-key">Obtaining an API Key</a></li>
+<li><a href="#libs">Installing the Helper Libraries</a></li>
+<li><a href="#android-app">Writing the Android Application</a>
+<li><a href="#server-app">Writing the Server-side Application</a> </li>
+</ol>
+
+</div>
+</div>
+
+<p>This document describes how to write an Android application and the  server-side logic, using the helper libraries (<a href="{@docRoot}guide/google/gcm/client-javadoc/index.html">client</a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html">server</a>) provided by GCM.</p>
+
+
+<h2 id="create-proj">Creating a Google API project</h2>
+<p>To create a Google API project:</p>
+<ol>
+  <li>Open the <a href="https://code.google.com/apis/console">Google APIs Console page</a>.
+  </li>
+  <li>If you haven't created an API project yet, this page will prompt you to do so:
+  <p><img src="{@docRoot}images/gcm/gcm-create-api-proj.png" class="screenshot" /></p>
+<p class="note"><strong>Note:</strong> If you already have existing projects, the first page you see will be the <strong>Dashboard</strong> page. From there you can create a new project by opening the project drop-down menu (upper left corner) and choosing <strong>Other projects > Create</strong>.</p></li>
+  <li> Click <strong>Create project</strong>.
+    Your browser URL will change to something like:</li>
+
+<pre> https://code.google.com/apis/console/#project:<strong>4815162342</strong></pre>
+
+  <li> Take note of the value after <code>#project:</code> (4815162342 in this example). This is your project ID, and it will be used later on as the GCM sender ID.</li>
+  
+</ol>
+<h2 id="gcm-service">Enabling the GCM Service</h2>
+<p>To enable the GCM service:</p>
+<ol>
+  <li> In the main Google APIs Console page, select <strong>Services</strong>.</li>
+  <li>Turn the <strong>Google Cloud Messaging</strong> toggle to ON.</li>
+  <li>In the Terms of Service page, accept the terms.
+  </li>
+</ol>
+<h2 id="access-key">Obtaining an API Key</h2>
+<p>To obtain an API  key:</p>
+<ol>
+  <li> In the main Google APIs Console page, select <strong>API Access</strong>. You will see a screen that resembles the following:</li><br />
+
+<div style="width:408px;margin:1.5em;">
+<div style="width:410px;border:1px solid #DDD;">
+<img src="{@docRoot}images/gcm/gcm-api-access.png" style="width:400px;padding:4px;margin-bottom:0em;">
+</div>
+</div>
+
+  <li>Click  <strong>Create new Server key</strong>. The following screen appears:</li><br />
+
+<div style="width:408px;margin:1.5em;">
+<div style="width:410px;border:1px solid #DDD;">
+<img src="{@docRoot}images/gcm/gcm-config-server-key.png" style="width:400px;padding:4px;margin-bottom:0em;">
+</div>
+</div>
+  
+  <li>Click <strong>Create</strong>:</li><br />
+  
+<div style="width:408px;margin:1.5em;">
+<div style="width:410px;border:1px solid #DDD;">
+<img src="{@docRoot}images/gcm/gcm-api-key.png" style="width:400px;padding:4px;margin-bottom:0em;">
+</div>
+</div>
+
+
+</ol>
+<p> Take note of the <strong>API key</strong> value (<code>YourKeyWillBeShownHere</code>) in this example, as it will be used later on.</p>
+<p class="note"><strong>Note:</strong> If you need to rotate the key, click  <strong>Generate new key</strong>. A new key  will be created while the old one will still be active for up to 24 hours. If you want to get rid of the old key immediately (for example, if you feel it was compromised), click <strong>Delete key</strong>.</p>
+
+<h2 id="libs">Install the Helper Libraries</h2>
+<p>To perform the steps described in the following sections, you must first install the helper libraries (reference: <a href="{@docRoot}guide/google/gcm/client-javadoc/index.html">client</a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html">server</a>). From the SDK Manager, install <strong>Extras &gt; Google Cloud Messaging for Android Library</strong>. This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, and <code>gcm-server</code>.</p>
+<h2 id="android-app">Writing the Android Application</h2>
+<p>This section describes the steps involved in writing an Android application that uses GCM.</p>
+<h4>Step 1: Copy the gcm.jar file into your application classpath</h4>
+<p> To write your Android application, first copy the <code>gcm.jar</code> file from the SDK's <code>gcm-client/dist</code> directory to your application classpath.</p>
+<h4>Step 2: Make the following changes in the application's Android manifest</h4>
+<ol>
+  <li>GCM requires Android 2.2 or later, so if your application cannot work without GCM, add the following line, where <em>xx</em> is the latest target SDK version:</li>
+
+<pre class="prettyprint pretty-xml">&lt;uses-sdk android:minSdkVersion=&quot;8&quot; android:targetSdkVersion=&quot;xx&quot;/&gt;</pre>
+
+  <li>Declare and use a custom permission so only this application can receive GCM messages:<br>
+  </li>
+
+<pre class="prettyprint pretty-xml">&lt;permission android:name=&quot;my_app_package.permission.C2D_MESSAGE&quot; android:protectionLevel=&quot;signature&quot; /&gt;
+&lt;uses-permission android:name=&quot;my_app_package.permission.C2D_MESSAGE&quot; /&gt; </pre>
+<p> This permission must be called <code>my_app_package.permission.C2D_MESSAGE</code> (where <code>my_app_package</code> is the package name of your app as defined by the manifest tag), otherwise it will not  work.</p>
+<p class="note"><strong>Note:</strong> This permission is not required if you are targeting your application to 4.1 or above (i.e., minSdkVersion 16)</p>
+
+  <li>Add the permission to receive GCM messages:</li>
+
+<pre class="prettyprint pretty-xml">&lt;uses-permission android:name=&quot;com.google.android.c2dm.permission.RECEIVE&quot; /&gt;</pre>
+
+  <li>Add the following broadcast receiver:</li>
+
+<pre class="prettyprint pretty-xml">&lt;receiver android:name=&quot;com.google.android.gcm.GCMBroadcastReceiver&quot; android:permission=&quot;com.google.android.c2dm.permission.SEND&quot; &gt;
+  &lt;intent-filter&gt;
+    &lt;action android:name=&quot;com.google.android.c2dm.intent.RECEIVE&quot; /&gt;
+    &lt;action android:name=&quot;com.google.android.c2dm.intent.REGISTRATION&quot; /&gt;
+    &lt;category android:name=&quot;my_app_package&quot; /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;</pre>
+<p> This broadcast receiver is responsible for handling the 2 intents that can be sent by GCM (<code>com.google.android.c2dm.intent.RECEIVE</code> and <code>com.google.android.c2dm.intent.REGISTRATION</code>) and should be defined in the manifest (rather than programmatically) so that these intents can be received even if the application is not running. By setting the <code>com.google.android.c2dm.permission.SEND</code> permission, you are ensuring that only intents sent by the GCM system framework are sent to the receiver (a regular application cannot issue intents with that permission).</p>
+<p> Notice that <code>android:name</code> in the category tag must be replaced by your application's package name (and the category tag  is not required for applications targeted to minSdkVersion 16 and higher).<br>
+  </p>
+
+  <li>Add the following intent service:</li>
+
+
+ <pre class="prettyprint pretty-xml">&lt;service android:name=&quot;.GCMIntentService&quot; /&gt;</pre>
+
+</ol>
+<p> This intent service will be called by the <code>GCMBroadcastReceiver</code> (which is is provided by GCM library), as shown in the next step. It must be named <code>my_app_package.GCMIntentService</code>, unless you use a subclass of <code>GCMBroadcastReceiver</code> that overrides the method used to name the service.</p>
+<h4><br>
+  Step 3: Write the my_app_package.GCMIntentService class</h4>
+<p>Next write the <code>my_app_package.GCMIntentService</code> class, overriding the following callback methods (which are called by <code>GCMBroadcastReceiver</code>):<br>
+</p>
+<ul>
+  <li><code>onRegistered(Context context, String regId)</code>: Called after a registration intent is received, passes the registration ID assigned by GCM to that device/application pair as parameter. Typically, you should send the <code>regid</code> to your server so it can use it to send messages to this device.</li>
+  <li><code>onUnregistered(Context context, String regId)</code>: Called after the device has been unregistered from GCM. Typically, you should send the <code>regid</code> to the server so it unregisters the device.</li>
+  <li><code>onMessage(Context context, Intent intent)</code>: Called when your server sends a message to GCM, and GCM delivers it to the device. If the message has a payload, its contents are available as extras in the intent.</li>
+  <li><code>onError(Context context, String errorId)</code>: Called when the device tries to register or unregister, but GCM returned an error. Typically, there is nothing to be done other than evaluating the error (returned by errorId) and trying to fix the problem.</li>
+  <li> <code>onRecoverableError(Context context, String errorId)</code>: Called when the device tries to register or unregister, but the GCM servers are unavailable. The GCM library will retry the operation using exponential backup, unless this method is overridden and returns false. This method is optional and should be overridden only if you want to display the message to the user or cancel the retry attempts. 
+  </li>
+</ul>
+
+<p class="note"><strong>Note:</strong> The methods above run in the intent service's thread and hence are free to make network calls without the risk of blocking the UI thread.</p>
+
+<h4> Step 4: Write your application's main activity</h4>
+Add the following import statement in your application's main activity:
+<pre class="prettyprint pretty-java">import com.google.android.gcm.GCMRegistrar;</pre>
+<p> In the <code>onCreate()</code> method, add the following code:</p>
+<pre class="prettyprint pretty-java">GCMRegistrar.checkDevice(this);
+GCMRegistrar.checkManifest(this);
+final String regId = GCMRegistrar.getRegistrationId(this);
+if (regId.equals("")) {
+  GCMRegistrar.register(this, SENDER_ID);
+} else {
+  Log.v(TAG, "Already registered");
+}</pre>
+<p>The <code>checkDevice()</code> method verifies that the device supports GCM and throws an exception if it does not (for instance, if it is an emulator that does not contain the Google APIs). Similarly, the <code>checkManifest()</code> method verifies that the application manifest contains meets all the requirements described in <a href="#android-app">Writing the Android Application</a> (this method is only necessary when you are developing the application; once the application is ready to be published, you can remove it).</p>
+
+<p>Once the sanity checks are done, the device calls <code>GCMRegsistrar.register()</code> to register the device, passing the <code>SENDER_ID</code> you got when you signed up for GCM. But since the <code>GCMRegistrar</code> singleton keeps track of the registration ID upon the arrival of registration intents, you can call <code>GCMRegistrar.getRegistrationId()</code> first to check if the device is already registered.</p>
+<p class="note"><strong>Note:</strong> It is possible that the device was successfully registered to GCM but failed to send the registration ID to your server, in which case you should retry. See <a href="adv.html#reg-state">Advanced Topics</a> for more details on how to handle this scenario.</p>
+
+<h2 id="server-app">Writing the Server-side Application</h2>
+
+<p>To write the server-side application:</p>
+<ol>
+  <li> Copy the <code>gcm-server.jar</code> file from the SDK's <code>gcm-server/dist</code> directory to your server classpath.</li>
+  <li>Create a servlet (or other server-side mechanism) that can be used by the Android application to send the registration ID received by GCM . The application might also need to send other information&mdash;such as the user's email address or username&mdash;so that the server can associate the registration ID with the user owning the device.</li>
+  <li>Similarly, create a servlet used to unregister registration IDs.<br>
+    </li>
+  <li>When the server needs to send a message to the device, it can use the <code>com.google.android.gcm.server.Sender</code> helper class from the GCM library. For example:</li>
+</ol>
+
+<pre class="prettyprint pretty-java">import com.google.android.gcm.server.*;
+
+Sender sender = new Sender(myApiKey);
+Message message = new Message.Builder(regId).build();
+Result result = sender.send(message, 5);</pre>
+
+<p> The snippet above does the following:
+<ul>
+<li>Creates a <code>Sender</code> object using your project's API key.</li>
+<li>Creates a message using a given registration ID (the message builder also has methods to set all message parameters such as the collapse key and payload data).</li>
+<li>Sends the message with a maximum of 5 retry attempts (in case the GCM servers are unavailable), and stores the response on result. </li>
+</ul>
+<p>It's now necessary to parse the result and take the proper action in the following cases:</p>
+<ul>
+  <li>If the message was created but the result returned a canonical registration ID, it's necessary to replace the current registration ID with the canonical one.</li>
+  <li>If the returned error is <code>NotRegistered</code>, it's necessary to remove that registration ID, because the application was uninstalled from the device.</li>
+</ul>
+<p> Here's a code snippet that handles these 2 conditions:</p>
+<pre class="prettyprint pretty-java">
+if (result.getMessageId() != null) {
+ String canonicalRegId = result.getCanonicalRegistrationId();
+ if (canonicalRegId != null) {
+   // same device has more than on registration ID: update database
+ }
+} else {
+ String error = result.getErrorCodeName();
+ if (error.equals(Constants.ERROR_NOT_REGISTERED)) {
+   // application has been removed from device - unregister database
+ }
+}</pre>
diff --git a/docs/html/guide/google/gcm/index.jd b/docs/html/guide/google/gcm/index.jd
new file mode 100644
index 0000000..cba8d0b
--- /dev/null
+++ b/docs/html/guide/google/gcm/index.jd
@@ -0,0 +1,25 @@
+page.title=Google Cloud Messaging for Android
+@jd:body
+
+
+<p><img src="{@docRoot}images/gcm/gcm-logo.png" /></p>
+<p>Google Cloud Messaging for Android (GCM) is a service that helps developers send data from servers to their Android applications on Android devices. This could be a lightweight message telling the Android application that there is new data to be fetched from the server (for instance, a movie uploaded by a friend), or it could be a message containing up to 4kb of payload data (so apps like instant messaging can consume the message directly). The GCM service handles all aspects of queueing of messages and delivery to the target Android application running on the target device.</p>
+
+<p>To learn more about GCM, read the following documents:</p>
+
+<dl>
+  <dt><strong><a href="{@docRoot}guide/google/gcm/gs.html">Getting Started</a></strong></dt>
+    <dd>Read this document to learn the basic steps involved in developing Android applications based on GCM.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/gcm/gcm.html">Architectural Overview</a></strong></dt>
+    <dd>Read this document for a description of the underlying concepts and architecture in GCM.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/gcm/demo.html">Demo App Tutorial</a></strong></dt>
+    <dd>Read this document to walk through setting up and running the GCM demo app.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/gcm/adv.html">Advanced Topics</a></strong></dt>
+    <dd>Read this document to get a more in-depth understanding of key GCM features.</dd>
+  <dt><a href="{@docRoot}guide/google/gcm/c2dm.html"><strong>Migration</strong></a></dt>
+    <dd>Read this document if you are a C2DM developer moving to GCM.</dd>
+</dl>
+
+<p>GCM also provides helper libraries for <a href="{@docRoot}guide/google/gcm/client-javadoc/index.html"><strong>client</strong></a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html"><strong>server</strong></a> development.</p>
+
+
diff --git a/docs/html/guide/google/gcm/server-javadoc/allclasses-frame.html b/docs/html/guide/google/gcm/server-javadoc/allclasses-frame.html
new file mode 100644
index 0000000..d2fe43d
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/allclasses-frame.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+All Classes
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server" target="classFrame">Constants</A>
+<BR>
+<A HREF="com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server" target="classFrame">InvalidRequestException</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server" target="classFrame">Message</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server" target="classFrame">Message.Builder</A>
+<BR>
+<A HREF="com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server" target="classFrame">MulticastResult</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server" target="classFrame">Result</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server" target="classFrame">Sender</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/allclasses-noframe.html b/docs/html/guide/google/gcm/server-javadoc/allclasses-noframe.html
new file mode 100644
index 0000000..0f0dc96
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/allclasses-noframe.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+All Classes
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<BR>
+<A HREF="com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A>
+<BR>
+<A HREF="com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A>
+<BR>
+<A HREF="com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
new file mode 100644
index 0000000..09ac011
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
@@ -0,0 +1,764 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:56 PDT 2012 -->
+<TITLE>
+Constants
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Constants";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Constants.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Constants.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Object">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm.server</FONT>
+<BR>
+Class Constants</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.server.Constants</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public final class <B>Constants</B><DT>extends java.lang.Object</DL>
+</PRE>
+
+<P>
+Constants used on GCM service communication.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_DEVICE_QUOTA_EXCEEDED">ERROR_DEVICE_QUOTA_EXCEEDED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Too many messages sent by the sender to a specific device.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_INVALID_REGISTRATION">ERROR_INVALID_REGISTRATION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bad registration_id.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_MESSAGE_TOO_BIG">ERROR_MESSAGE_TOO_BIG</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The payload of the message is too big, see the limitations.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_MISMATCH_SENDER_ID">ERROR_MISMATCH_SENDER_ID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The sender_id contained in the registration_id does not match the
+ sender_id used to register with the GCM servers.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_MISSING_COLLAPSE_KEY">ERROR_MISSING_COLLAPSE_KEY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collapse key is required.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_MISSING_REGISTRATION">ERROR_MISSING_REGISTRATION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Missing registration_id.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_NOT_REGISTERED">ERROR_NOT_REGISTERED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The user has uninstalled the application or turned off notifications.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_QUOTA_EXCEEDED">ERROR_QUOTA_EXCEEDED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Too many messages sent by the sender.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#ERROR_UNAVAILABLE">ERROR_UNAVAILABLE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Used to indicate that a particular message could not be sent because
+ the GCM servers were not available.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#GCM_SEND_ENDPOINT">GCM_SEND_ENDPOINT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Endpoint for sending messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_CANONICAL_IDS">JSON_CANONICAL_IDS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the number of messages with a canonical
+ registration id.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_ERROR">JSON_ERROR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the error field of an individual request.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_FAILURE">JSON_FAILURE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the number of failed messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_MESSAGE_ID">JSON_MESSAGE_ID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field sent by GCM when a message was successfully sent.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_MULTICAST_ID">JSON_MULTICAST_ID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the id of the multicast request.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_PAYLOAD">JSON_PAYLOAD</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the payload data.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_REGISTRATION_IDS">JSON_REGISTRATION_IDS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the registration ids.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_RESULTS">JSON_RESULTS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the result of each individual request.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#JSON_SUCCESS">JSON_SUCCESS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON-only field representing the number of successful messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#PARAM_COLLAPSE_KEY">PARAM_COLLAPSE_KEY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP parameter for collapse key.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#PARAM_DELAY_WHILE_IDLE">PARAM_DELAY_WHILE_IDLE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP parameter for delaying the message delivery if the device is idle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#PARAM_PAYLOAD_PREFIX">PARAM_PAYLOAD_PREFIX</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prefix to HTTP parameter used to pass key-values in the message payload.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#PARAM_REGISTRATION_ID">PARAM_REGISTRATION_ID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP parameter for registration id.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#PARAM_TIME_TO_LIVE">PARAM_TIME_TO_LIVE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prefix to HTTP parameter used to set the message time-to-live.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#TOKEN_CANONICAL_REG_ID">TOKEN_CANONICAL_REG_ID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Token returned by GCM when the requested registration id has a canonical
+ value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#TOKEN_ERROR">TOKEN_ERROR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Token returned by GCM when there was an error sending a message.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html#TOKEN_MESSAGE_ID">TOKEN_MESSAGE_ID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Token returned by GCM when a message was successfully sent.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="GCM_SEND_ENDPOINT"><!-- --></A><H3>
+GCM_SEND_ENDPOINT</H3>
+<PRE>
+public static final java.lang.String <B>GCM_SEND_ENDPOINT</B></PRE>
+<DL>
+<DD>Endpoint for sending messages.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.GCM_SEND_ENDPOINT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PARAM_REGISTRATION_ID"><!-- --></A><H3>
+PARAM_REGISTRATION_ID</H3>
+<PRE>
+public static final java.lang.String <B>PARAM_REGISTRATION_ID</B></PRE>
+<DL>
+<DD>HTTP parameter for registration id.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.PARAM_REGISTRATION_ID">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PARAM_COLLAPSE_KEY"><!-- --></A><H3>
+PARAM_COLLAPSE_KEY</H3>
+<PRE>
+public static final java.lang.String <B>PARAM_COLLAPSE_KEY</B></PRE>
+<DL>
+<DD>HTTP parameter for collapse key.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.PARAM_COLLAPSE_KEY">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PARAM_DELAY_WHILE_IDLE"><!-- --></A><H3>
+PARAM_DELAY_WHILE_IDLE</H3>
+<PRE>
+public static final java.lang.String <B>PARAM_DELAY_WHILE_IDLE</B></PRE>
+<DL>
+<DD>HTTP parameter for delaying the message delivery if the device is idle.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.PARAM_DELAY_WHILE_IDLE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PARAM_PAYLOAD_PREFIX"><!-- --></A><H3>
+PARAM_PAYLOAD_PREFIX</H3>
+<PRE>
+public static final java.lang.String <B>PARAM_PAYLOAD_PREFIX</B></PRE>
+<DL>
+<DD>Prefix to HTTP parameter used to pass key-values in the message payload.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.PARAM_PAYLOAD_PREFIX">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PARAM_TIME_TO_LIVE"><!-- --></A><H3>
+PARAM_TIME_TO_LIVE</H3>
+<PRE>
+public static final java.lang.String <B>PARAM_TIME_TO_LIVE</B></PRE>
+<DL>
+<DD>Prefix to HTTP parameter used to set the message time-to-live.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.PARAM_TIME_TO_LIVE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_QUOTA_EXCEEDED"><!-- --></A><H3>
+ERROR_QUOTA_EXCEEDED</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_QUOTA_EXCEEDED</B></PRE>
+<DL>
+<DD>Too many messages sent by the sender. Retry after a while.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_QUOTA_EXCEEDED">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_DEVICE_QUOTA_EXCEEDED"><!-- --></A><H3>
+ERROR_DEVICE_QUOTA_EXCEEDED</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_DEVICE_QUOTA_EXCEEDED</B></PRE>
+<DL>
+<DD>Too many messages sent by the sender to a specific device.
+ Retry after a while.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_DEVICE_QUOTA_EXCEEDED">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_MISSING_REGISTRATION"><!-- --></A><H3>
+ERROR_MISSING_REGISTRATION</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_MISSING_REGISTRATION</B></PRE>
+<DL>
+<DD>Missing registration_id.
+ Sender should always add the registration_id to the request.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_MISSING_REGISTRATION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_INVALID_REGISTRATION"><!-- --></A><H3>
+ERROR_INVALID_REGISTRATION</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_INVALID_REGISTRATION</B></PRE>
+<DL>
+<DD>Bad registration_id. Sender should remove this registration_id.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_INVALID_REGISTRATION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_MISMATCH_SENDER_ID"><!-- --></A><H3>
+ERROR_MISMATCH_SENDER_ID</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_MISMATCH_SENDER_ID</B></PRE>
+<DL>
+<DD>The sender_id contained in the registration_id does not match the
+ sender_id used to register with the GCM servers.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_MISMATCH_SENDER_ID">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_NOT_REGISTERED"><!-- --></A><H3>
+ERROR_NOT_REGISTERED</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_NOT_REGISTERED</B></PRE>
+<DL>
+<DD>The user has uninstalled the application or turned off notifications.
+ Sender should stop sending messages to this device and delete the
+ registration_id. The client needs to re-register with the GCM servers to
+ receive notifications again.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_NOT_REGISTERED">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_MESSAGE_TOO_BIG"><!-- --></A><H3>
+ERROR_MESSAGE_TOO_BIG</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_MESSAGE_TOO_BIG</B></PRE>
+<DL>
+<DD>The payload of the message is too big, see the limitations.
+ Reduce the size of the message.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_MESSAGE_TOO_BIG">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_MISSING_COLLAPSE_KEY"><!-- --></A><H3>
+ERROR_MISSING_COLLAPSE_KEY</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_MISSING_COLLAPSE_KEY</B></PRE>
+<DL>
+<DD>Collapse key is required. Include collapse key in the request.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_MISSING_COLLAPSE_KEY">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="ERROR_UNAVAILABLE"><!-- --></A><H3>
+ERROR_UNAVAILABLE</H3>
+<PRE>
+public static final java.lang.String <B>ERROR_UNAVAILABLE</B></PRE>
+<DL>
+<DD>Used to indicate that a particular message could not be sent because
+ the GCM servers were not available. Used only on JSON requests, as in
+ plain text requests unavailability is indicated by a 503 response.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.ERROR_UNAVAILABLE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="TOKEN_MESSAGE_ID"><!-- --></A><H3>
+TOKEN_MESSAGE_ID</H3>
+<PRE>
+public static final java.lang.String <B>TOKEN_MESSAGE_ID</B></PRE>
+<DL>
+<DD>Token returned by GCM when a message was successfully sent.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.TOKEN_MESSAGE_ID">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="TOKEN_CANONICAL_REG_ID"><!-- --></A><H3>
+TOKEN_CANONICAL_REG_ID</H3>
+<PRE>
+public static final java.lang.String <B>TOKEN_CANONICAL_REG_ID</B></PRE>
+<DL>
+<DD>Token returned by GCM when the requested registration id has a canonical
+ value.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.TOKEN_CANONICAL_REG_ID">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="TOKEN_ERROR"><!-- --></A><H3>
+TOKEN_ERROR</H3>
+<PRE>
+public static final java.lang.String <B>TOKEN_ERROR</B></PRE>
+<DL>
+<DD>Token returned by GCM when there was an error sending a message.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.TOKEN_ERROR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_REGISTRATION_IDS"><!-- --></A><H3>
+JSON_REGISTRATION_IDS</H3>
+<PRE>
+public static final java.lang.String <B>JSON_REGISTRATION_IDS</B></PRE>
+<DL>
+<DD>JSON-only field representing the registration ids.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_REGISTRATION_IDS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_PAYLOAD"><!-- --></A><H3>
+JSON_PAYLOAD</H3>
+<PRE>
+public static final java.lang.String <B>JSON_PAYLOAD</B></PRE>
+<DL>
+<DD>JSON-only field representing the payload data.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_PAYLOAD">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_SUCCESS"><!-- --></A><H3>
+JSON_SUCCESS</H3>
+<PRE>
+public static final java.lang.String <B>JSON_SUCCESS</B></PRE>
+<DL>
+<DD>JSON-only field representing the number of successful messages.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_SUCCESS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_FAILURE"><!-- --></A><H3>
+JSON_FAILURE</H3>
+<PRE>
+public static final java.lang.String <B>JSON_FAILURE</B></PRE>
+<DL>
+<DD>JSON-only field representing the number of failed messages.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_FAILURE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_CANONICAL_IDS"><!-- --></A><H3>
+JSON_CANONICAL_IDS</H3>
+<PRE>
+public static final java.lang.String <B>JSON_CANONICAL_IDS</B></PRE>
+<DL>
+<DD>JSON-only field representing the number of messages with a canonical
+ registration id.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_CANONICAL_IDS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_MULTICAST_ID"><!-- --></A><H3>
+JSON_MULTICAST_ID</H3>
+<PRE>
+public static final java.lang.String <B>JSON_MULTICAST_ID</B></PRE>
+<DL>
+<DD>JSON-only field representing the id of the multicast request.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_MULTICAST_ID">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_RESULTS"><!-- --></A><H3>
+JSON_RESULTS</H3>
+<PRE>
+public static final java.lang.String <B>JSON_RESULTS</B></PRE>
+<DL>
+<DD>JSON-only field representing the result of each individual request.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_RESULTS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_ERROR"><!-- --></A><H3>
+JSON_ERROR</H3>
+<PRE>
+public static final java.lang.String <B>JSON_ERROR</B></PRE>
+<DL>
+<DD>JSON-only field representing the error field of an individual request.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_ERROR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="JSON_MESSAGE_ID"><!-- --></A><H3>
+JSON_MESSAGE_ID</H3>
+<PRE>
+public static final java.lang.String <B>JSON_MESSAGE_ID</B></PRE>
+<DL>
+<DD>JSON-only field sent by GCM when a message was successfully sent.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Constants.JSON_MESSAGE_ID">Constant Field Values</A></DL>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Constants.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Constants.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Object">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
new file mode 100644
index 0000000..4b3271c
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
@@ -0,0 +1,310 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:56 PDT 2012 -->
+<TITLE>
+InvalidRequestException
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="InvalidRequestException";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/InvalidRequestException.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InvalidRequestException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm.server</FONT>
+<BR>
+Class InvalidRequestException</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by ">java.lang.Throwable
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by ">java.lang.Exception
+          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by ">java.io.IOException
+              <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.server.InvalidRequestException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public final class <B>InvalidRequestException</B><DT>extends java.io.IOException</DL>
+</PRE>
+
+<P>
+Exception thrown when GCM returned an error due to an invalid request.
+ <p>
+ This is equivalent to GCM posts that return an HTTP error different of 200.
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#com.google.android.gcm.server.InvalidRequestException">Serialized Form</A></DL>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html#InvalidRequestException(int)">InvalidRequestException</A></B>(int&nbsp;status)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html#InvalidRequestException(int, java.lang.String)">InvalidRequestException</A></B>(int&nbsp;status,
+                        java.lang.String&nbsp;description)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html#getDescription()">getDescription</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the error description.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html#getHttpStatusCode()">getHttpStatusCode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the HTTP Status Code.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Throwable</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="InvalidRequestException(int)"><!-- --></A><H3>
+InvalidRequestException</H3>
+<PRE>
+public <B>InvalidRequestException</B>(int&nbsp;status)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="InvalidRequestException(int, java.lang.String)"><!-- --></A><H3>
+InvalidRequestException</H3>
+<PRE>
+public <B>InvalidRequestException</B>(int&nbsp;status,
+                               java.lang.String&nbsp;description)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getHttpStatusCode()"><!-- --></A><H3>
+getHttpStatusCode</H3>
+<PRE>
+public int <B>getHttpStatusCode</B>()</PRE>
+<DL>
+<DD>Gets the HTTP Status Code.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDescription()"><!-- --></A><H3>
+getDescription</H3>
+<PRE>
+public java.lang.String <B>getDescription</B>()</PRE>
+<DL>
+<DD>Gets the error description.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/InvalidRequestException.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InvalidRequestException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
new file mode 100644
index 0000000..5952e87
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
@@ -0,0 +1,337 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Message.Builder
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Message.Builder";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Message.Builder.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Message.Builder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm.server</FONT>
+<BR>
+Class Message.Builder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.server.Message.Builder</B>
+</PRE>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public static final class <B>Message.Builder</B><DT>extends java.lang.Object</DL>
+</PRE>
+
+<P>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html#Message.Builder()">Message.Builder</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html#addData(java.lang.String, java.lang.String)">addData</A></B>(java.lang.String&nbsp;key,
+        java.lang.String&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a key/value pair to the payload data.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html#build()">build</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html#collapseKey(java.lang.String)">collapseKey</A></B>(java.lang.String&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the collapseKey property.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html#delayWhileIdle(boolean)">delayWhileIdle</A></B>(boolean&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the delayWhileIdle property (default value is false).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html#timeToLive(int)">timeToLive</A></B>(int&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the time to live, in seconds.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="Message.Builder()"><!-- --></A><H3>
+Message.Builder</H3>
+<PRE>
+public <B>Message.Builder</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="collapseKey(java.lang.String)"><!-- --></A><H3>
+collapseKey</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A> <B>collapseKey</B>(java.lang.String&nbsp;value)</PRE>
+<DL>
+<DD>Sets the collapseKey property.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="delayWhileIdle(boolean)"><!-- --></A><H3>
+delayWhileIdle</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A> <B>delayWhileIdle</B>(boolean&nbsp;value)</PRE>
+<DL>
+<DD>Sets the delayWhileIdle property (default value is false).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="timeToLive(int)"><!-- --></A><H3>
+timeToLive</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A> <B>timeToLive</B>(int&nbsp;value)</PRE>
+<DL>
+<DD>Sets the time to live, in seconds.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addData(java.lang.String, java.lang.String)"><!-- --></A><H3>
+addData</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A> <B>addData</B>(java.lang.String&nbsp;key,
+                               java.lang.String&nbsp;value)</PRE>
+<DL>
+<DD>Adds a key/value pair to the payload data.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="build()"><!-- --></A><H3>
+build</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A> <B>build</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Message.Builder.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Message.Builder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
new file mode 100644
index 0000000..0773686
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
@@ -0,0 +1,369 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Message
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Message";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Message.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Message.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm.server</FONT>
+<BR>
+Class Message</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.server.Message</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public final class <B>Message</B><DT>extends java.lang.Object<DT>implements java.io.Serializable</DL>
+</PRE>
+
+<P>
+GCM message.
+
+ <p>
+ Instances of this class are immutable and should be created using a
+ <A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><CODE>Message.Builder</CODE></A>. Examples:
+
+ <strong>Simplest message:</strong>
+ <pre><code>
+ Message message = new Message.Builder().build();
+ </pre></code>
+
+ <strong>Message with optional attributes:</strong>
+ <pre><code>
+ Message message = new Message.Builder()
+    .collapseKey(collapseKey)
+    .timeToLive(3)
+    .delayWhileIdle(true)
+    .build();
+ </pre></code>
+
+ <strong>Message with optional attributes and payload data:</strong>
+ <pre><code>
+ Message message = new Message.Builder()
+    .collapseKey(collapseKey)
+    .timeToLive(3)
+    .delayWhileIdle(true)
+    .addData("key1", "value1")
+    .addData("key2", "value2")
+    .build();
+ </pre></code>
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#com.google.android.gcm.server.Message">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.html#getCollapseKey()">getCollapseKey</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the collapse key.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Map&lt;java.lang.String,java.lang.String&gt;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.html#getData()">getData</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the payload data, which is immutable.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Integer</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.html#getTimeToLive()">getTimeToLive</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the time to live (in seconds).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.html#isDelayWhileIdle()">isDelayWhileIdle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the delayWhileIdle flag.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Message.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getCollapseKey()"><!-- --></A><H3>
+getCollapseKey</H3>
+<PRE>
+public java.lang.String <B>getCollapseKey</B>()</PRE>
+<DL>
+<DD>Gets the collapse key.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDelayWhileIdle()"><!-- --></A><H3>
+isDelayWhileIdle</H3>
+<PRE>
+public java.lang.Boolean <B>isDelayWhileIdle</B>()</PRE>
+<DL>
+<DD>Gets the delayWhileIdle flag.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTimeToLive()"><!-- --></A><H3>
+getTimeToLive</H3>
+<PRE>
+public java.lang.Integer <B>getTimeToLive</B>()</PRE>
+<DL>
+<DD>Gets the time to live (in seconds).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getData()"><!-- --></A><H3>
+getData</H3>
+<PRE>
+public java.util.Map&lt;java.lang.String,java.lang.String&gt; <B>getData</B>()</PRE>
+<DL>
+<DD>Gets the payload data, which is immutable.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Message.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Message.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
new file mode 100644
index 0000000..f9df609
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
@@ -0,0 +1,397 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+MulticastResult
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="MulticastResult";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/MulticastResult.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MulticastResult.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm.server</FONT>
+<BR>
+Class MulticastResult</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.server.MulticastResult</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public final class <B>MulticastResult</B><DT>extends java.lang.Object<DT>implements java.io.Serializable</DL>
+</PRE>
+
+<P>
+Result of a GCM multicast message request .
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#com.google.android.gcm.server.MulticastResult">Serialized Form</A></DL>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#getCanonicalIds()">getCanonicalIds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the number of successful messages that also returned a canonical
+ registration id.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#getFailure()">getFailure</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the number of failed messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#getMulticastId()">getMulticastId</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the multicast id.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List&lt;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A>&gt;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#getResults()">getResults</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the results of each individual message, which is immutable.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List&lt;java.lang.Long&gt;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#getRetryMulticastIds()">getRetryMulticastIds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets additional ids if more than one multicast message was sent.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#getSuccess()">getSuccess</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the number of successful messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#getTotal()">getTotal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the total number of messages sent, regardless of the status.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getMulticastId()"><!-- --></A><H3>
+getMulticastId</H3>
+<PRE>
+public long <B>getMulticastId</B>()</PRE>
+<DL>
+<DD>Gets the multicast id.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSuccess()"><!-- --></A><H3>
+getSuccess</H3>
+<PRE>
+public int <B>getSuccess</B>()</PRE>
+<DL>
+<DD>Gets the number of successful messages.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTotal()"><!-- --></A><H3>
+getTotal</H3>
+<PRE>
+public int <B>getTotal</B>()</PRE>
+<DL>
+<DD>Gets the total number of messages sent, regardless of the status.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getFailure()"><!-- --></A><H3>
+getFailure</H3>
+<PRE>
+public int <B>getFailure</B>()</PRE>
+<DL>
+<DD>Gets the number of failed messages.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCanonicalIds()"><!-- --></A><H3>
+getCanonicalIds</H3>
+<PRE>
+public int <B>getCanonicalIds</B>()</PRE>
+<DL>
+<DD>Gets the number of successful messages that also returned a canonical
+ registration id.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResults()"><!-- --></A><H3>
+getResults</H3>
+<PRE>
+public java.util.List&lt;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A>&gt; <B>getResults</B>()</PRE>
+<DL>
+<DD>Gets the results of each individual message, which is immutable.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRetryMulticastIds()"><!-- --></A><H3>
+getRetryMulticastIds</H3>
+<PRE>
+public java.util.List&lt;java.lang.Long&gt; <B>getRetryMulticastIds</B>()</PRE>
+<DL>
+<DD>Gets additional ids if more than one multicast message was sent.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/MulticastResult.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MulticastResult.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
new file mode 100644
index 0000000..14d4b34
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
@@ -0,0 +1,322 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Result
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Result";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Result.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Result.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm.server</FONT>
+<BR>
+Class Result</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.server.Result</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public final class <B>Result</B><DT>extends java.lang.Object<DT>implements java.io.Serializable</DL>
+</PRE>
+
+<P>
+Result of a GCM message request that returned HTTP status code 200.
+
+ <p>
+ If the message is successfully created, the <A HREF="../../../../../com/google/android/gcm/server/Result.html#getMessageId()"><CODE>getMessageId()</CODE></A> returns
+ the message id and <A HREF="../../../../../com/google/android/gcm/server/Result.html#getErrorCodeName()"><CODE>getErrorCodeName()</CODE></A> returns null;
+ otherwise, <A HREF="../../../../../com/google/android/gcm/server/Result.html#getMessageId()"><CODE>getMessageId()</CODE></A> returns null and 
+ <A HREF="../../../../../com/google/android/gcm/server/Result.html#getErrorCodeName()"><CODE>getErrorCodeName()</CODE></A> returns the code of the error.
+
+ <p>
+ There are cases when a request is accept and the message successfully
+ created, but GCM has a canonical registration id for that device. In this
+ case, the server should update the registration id to avoid rejected requests
+ in the future.
+ 
+ <p>
+ In a nutshell, the workflow to handle a result is:
+ <pre>
+   - Call <A HREF="../../../../../com/google/android/gcm/server/Result.html#getMessageId()"><CODE>getMessageId()</CODE></A>:
+     - null means error, call <A HREF="../../../../../com/google/android/gcm/server/Result.html#getErrorCodeName()"><CODE>getErrorCodeName()</CODE></A>
+     - non-null means the message was created:
+       - Call <A HREF="../../../../../com/google/android/gcm/server/Result.html#getCanonicalRegistrationId()"><CODE>getCanonicalRegistrationId()</CODE></A>
+         - if it returns null, do nothing.
+         - otherwise, update the server datastore with the new id.
+ </pre>
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#com.google.android.gcm.server.Result">Serialized Form</A></DL>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Result.html#getCanonicalRegistrationId()">getCanonicalRegistrationId</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the canonical registration id, if any.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Result.html#getErrorCodeName()">getErrorCodeName</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the error code, if any.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Result.html#getMessageId()">getMessageId</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the message id, if any.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Result.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getMessageId()"><!-- --></A><H3>
+getMessageId</H3>
+<PRE>
+public java.lang.String <B>getMessageId</B>()</PRE>
+<DL>
+<DD>Gets the message id, if any.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCanonicalRegistrationId()"><!-- --></A><H3>
+getCanonicalRegistrationId</H3>
+<PRE>
+public java.lang.String <B>getCanonicalRegistrationId</B>()</PRE>
+<DL>
+<DD>Gets the canonical registration id, if any.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getErrorCodeName()"><!-- --></A><H3>
+getErrorCodeName</H3>
+<PRE>
+public java.lang.String <B>getErrorCodeName</B>()</PRE>
+<DL>
+<DD>Gets the error code, if any.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Result.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Result.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
new file mode 100644
index 0000000..4f1a2ac
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
@@ -0,0 +1,662 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Sender
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Sender";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Sender.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Sender.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.google.android.gcm.server</FONT>
+<BR>
+Class Sender</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.google.android.gcm.server.Sender</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public class <B>Sender</B><DT>extends java.lang.Object</DL>
+</PRE>
+
+<P>
+Helper class to send messages to the GCM service using an API Key.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#BACKOFF_INITIAL_DELAY">BACKOFF_INITIAL_DELAY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initial delay before first retry, without jitter.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.logging.Logger</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#logger">logger</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#MAX_BACKOFF_DELAY">MAX_BACKOFF_DELAY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum delay before a retry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Random</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#random">random</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#UTF8">UTF8</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#Sender(java.lang.String)">Sender</A></B>(java.lang.String&nbsp;key)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default constructor.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#addParameter(java.lang.StringBuilder, java.lang.String, java.lang.String)">addParameter</A></B>(java.lang.StringBuilder&nbsp;body,
+             java.lang.String&nbsp;name,
+             java.lang.String&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a new parameter to the HTTP POST body.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.net.HttpURLConnection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#getConnection(java.lang.String)">getConnection</A></B>(java.lang.String&nbsp;url)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets an <CODE>HttpURLConnection</CODE> given an URL.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#getString(java.io.InputStream)">getString</A></B>(java.io.InputStream&nbsp;stream)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convenience method to convert an InputStream to a String.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;java.lang.StringBuilder</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#newBody(java.lang.String, java.lang.String)">newBody</A></B>(java.lang.String&nbsp;name,
+        java.lang.String&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <CODE>StringBuilder</CODE> to be used as the body of an HTTP POST.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;java.util.Map&lt;java.lang.String,java.lang.String&gt;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#newKeyValues(java.lang.String, java.lang.String)">newKeyValues</A></B>(java.lang.String&nbsp;key,
+             java.lang.String&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a map with just one key-value pair.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.net.HttpURLConnection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#post(java.lang.String, java.lang.String)">post</A></B>(java.lang.String&nbsp;url,
+     java.lang.String&nbsp;body)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make an HTTP post to a given URL.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.net.HttpURLConnection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#post(java.lang.String, java.lang.String, java.lang.String)">post</A></B>(java.lang.String&nbsp;url,
+     java.lang.String&nbsp;contentType,
+     java.lang.String&nbsp;body)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.util.List, int)">send</A></B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+     java.util.List&lt;java.lang.String&gt;&nbsp;regIds,
+     int&nbsp;retries)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a message to many devices, retrying in case of unavailability.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.lang.String, int)">send</A></B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+     java.lang.String&nbsp;registrationId,
+     int&nbsp;retries)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a message to one device, retrying in case of unavailability.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#sendNoRetry(com.google.android.gcm.server.Message, java.util.List)">sendNoRetry</A></B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+            java.util.List&lt;java.lang.String&gt;&nbsp;registrationIds)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a message without retrying in case of service unavailability.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html#sendNoRetry(com.google.android.gcm.server.Message, java.lang.String)">sendNoRetry</A></B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+            java.lang.String&nbsp;registrationId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a message without retrying in case of service unavailability.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="UTF8"><!-- --></A><H3>
+UTF8</H3>
+<PRE>
+protected static final java.lang.String <B>UTF8</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Sender.UTF8">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="BACKOFF_INITIAL_DELAY"><!-- --></A><H3>
+BACKOFF_INITIAL_DELAY</H3>
+<PRE>
+protected static final int <B>BACKOFF_INITIAL_DELAY</B></PRE>
+<DL>
+<DD>Initial delay before first retry, without jitter.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Sender.BACKOFF_INITIAL_DELAY">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="MAX_BACKOFF_DELAY"><!-- --></A><H3>
+MAX_BACKOFF_DELAY</H3>
+<PRE>
+protected static final int <B>MAX_BACKOFF_DELAY</B></PRE>
+<DL>
+<DD>Maximum delay before a retry.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.google.android.gcm.server.Sender.MAX_BACKOFF_DELAY">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="random"><!-- --></A><H3>
+random</H3>
+<PRE>
+protected final java.util.Random <B>random</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="logger"><!-- --></A><H3>
+logger</H3>
+<PRE>
+protected final java.util.logging.Logger <B>logger</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="Sender(java.lang.String)"><!-- --></A><H3>
+Sender</H3>
+<PRE>
+public <B>Sender</B>(java.lang.String&nbsp;key)</PRE>
+<DL>
+<DD>Default constructor.
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>key</CODE> - API key obtained through the Google API Console.</DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="send(com.google.android.gcm.server.Message, java.lang.String, int)"><!-- --></A><H3>
+send</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A> <B>send</B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+                   java.lang.String&nbsp;registrationId,
+                   int&nbsp;retries)
+            throws java.io.IOException</PRE>
+<DL>
+<DD>Sends a message to one device, retrying in case of unavailability.
+
+ <p>
+ <strong>Note: </strong> this method uses exponential back-off to retry in
+ case of service unavailability and hence could block the calling thread
+ for many seconds.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>message</CODE> - message to be sent, including the device's registration id.<DD><CODE>registrationId</CODE> - device where the message will be sent.<DD><CODE>retries</CODE> - number of retries in case of service unavailability errors.
+<DT><B>Returns:</B><DD>result of the request (see its javadoc for more details)
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if registrationId is null.
+<DD><CODE><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A></CODE> - if GCM didn't returned a 200 or 503 status.
+<DD><CODE>java.io.IOException</CODE> - if message could not be sent.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="sendNoRetry(com.google.android.gcm.server.Message, java.lang.String)"><!-- --></A><H3>
+sendNoRetry</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A> <B>sendNoRetry</B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+                          java.lang.String&nbsp;registrationId)
+                   throws java.io.IOException</PRE>
+<DL>
+<DD>Sends a message without retrying in case of service unavailability. See
+ <A HREF="../../../../../com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.lang.String, int)"><CODE>send(Message, String, int)</CODE></A> for more info.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>result of the post, or null if the GCM service was
+         unavailable.
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A></CODE> - if GCM didn't returned a 200 or 503 status.
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if registrationId is null.
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="send(com.google.android.gcm.server.Message, java.util.List, int)"><!-- --></A><H3>
+send</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A> <B>send</B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+                            java.util.List&lt;java.lang.String&gt;&nbsp;regIds,
+                            int&nbsp;retries)
+                     throws java.io.IOException</PRE>
+<DL>
+<DD>Sends a message to many devices, retrying in case of unavailability.
+
+ <p>
+ <strong>Note: </strong> this method uses exponential back-off to retry in
+ case of service unavailability and hence could block the calling thread
+ for many seconds.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>message</CODE> - message to be sent.<DD><CODE>regIds</CODE> - registration id of the devices that will receive
+        the message.<DD><CODE>retries</CODE> - number of retries in case of service unavailability errors.
+<DT><B>Returns:</B><DD>combined result of all requests made.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if registrationIds is null or
+         empty.
+<DD><CODE><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A></CODE> - if GCM didn't returned a 200 or 503 status.
+<DD><CODE>java.io.IOException</CODE> - if message could not be sent.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="sendNoRetry(com.google.android.gcm.server.Message, java.util.List)"><!-- --></A><H3>
+sendNoRetry</H3>
+<PRE>
+public <A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A> <B>sendNoRetry</B>(<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>&nbsp;message,
+                                   java.util.List&lt;java.lang.String&gt;&nbsp;registrationIds)
+                            throws java.io.IOException</PRE>
+<DL>
+<DD>Sends a message without retrying in case of service unavailability. See
+ <A HREF="../../../../../com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.util.List, int)"><CODE>send(Message, List, int)</CODE></A> for more info.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the message was sent successfully,
+         false if it failed but could be retried.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if registrationIds is null or
+         empty.
+<DD><CODE><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A></CODE> - if GCM didn't returned a 200 status.
+<DD><CODE>java.io.IOException</CODE> - if message could not be sent or received.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="post(java.lang.String, java.lang.String)"><!-- --></A><H3>
+post</H3>
+<PRE>
+protected java.net.HttpURLConnection <B>post</B>(java.lang.String&nbsp;url,
+                                          java.lang.String&nbsp;body)
+                                   throws java.io.IOException</PRE>
+<DL>
+<DD>Make an HTTP post to a given URL.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>HTTP response.
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="post(java.lang.String, java.lang.String, java.lang.String)"><!-- --></A><H3>
+post</H3>
+<PRE>
+protected java.net.HttpURLConnection <B>post</B>(java.lang.String&nbsp;url,
+                                          java.lang.String&nbsp;contentType,
+                                          java.lang.String&nbsp;body)
+                                   throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="newKeyValues(java.lang.String, java.lang.String)"><!-- --></A><H3>
+newKeyValues</H3>
+<PRE>
+protected static final java.util.Map&lt;java.lang.String,java.lang.String&gt; <B>newKeyValues</B>(java.lang.String&nbsp;key,
+                                                                                     java.lang.String&nbsp;value)</PRE>
+<DL>
+<DD>Creates a map with just one key-value pair.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="newBody(java.lang.String, java.lang.String)"><!-- --></A><H3>
+newBody</H3>
+<PRE>
+protected static java.lang.StringBuilder <B>newBody</B>(java.lang.String&nbsp;name,
+                                                 java.lang.String&nbsp;value)</PRE>
+<DL>
+<DD>Creates a <CODE>StringBuilder</CODE> to be used as the body of an HTTP POST.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>name</CODE> - initial parameter for the POST.<DD><CODE>value</CODE> - initial value for that parameter.
+<DT><B>Returns:</B><DD>StringBuilder to be used an HTTP POST body.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addParameter(java.lang.StringBuilder, java.lang.String, java.lang.String)"><!-- --></A><H3>
+addParameter</H3>
+<PRE>
+protected static void <B>addParameter</B>(java.lang.StringBuilder&nbsp;body,
+                                   java.lang.String&nbsp;name,
+                                   java.lang.String&nbsp;value)</PRE>
+<DL>
+<DD>Adds a new parameter to the HTTP POST body.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>body</CODE> - HTTP POST body<DD><CODE>name</CODE> - parameter's name<DD><CODE>value</CODE> - parameter's value</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getConnection(java.lang.String)"><!-- --></A><H3>
+getConnection</H3>
+<PRE>
+protected java.net.HttpURLConnection <B>getConnection</B>(java.lang.String&nbsp;url)
+                                            throws java.io.IOException</PRE>
+<DL>
+<DD>Gets an <CODE>HttpURLConnection</CODE> given an URL.
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getString(java.io.InputStream)"><!-- --></A><H3>
+getString</H3>
+<PRE>
+protected static java.lang.String <B>getString</B>(java.io.InputStream&nbsp;stream)
+                                     throws java.io.IOException</PRE>
+<DL>
+<DD>Convenience method to convert an InputStream to a String.
+
+ <p>
+ If the stream ends in a newline character, it will be stripped.
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/Sender.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Sender.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-frame.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-frame.html
new file mode 100644
index 0000000..8312f46
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-frame.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+com.google.android.gcm.server
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/google/android/gcm/server/package-summary.html" target="classFrame">com.google.android.gcm.server</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Constants.html" title="class in com.google.android.gcm.server" target="classFrame">Constants</A>
+<BR>
+<A HREF="Message.html" title="class in com.google.android.gcm.server" target="classFrame">Message</A>
+<BR>
+<A HREF="Message.Builder.html" title="class in com.google.android.gcm.server" target="classFrame">Message.Builder</A>
+<BR>
+<A HREF="MulticastResult.html" title="class in com.google.android.gcm.server" target="classFrame">MulticastResult</A>
+<BR>
+<A HREF="Result.html" title="class in com.google.android.gcm.server" target="classFrame">Result</A>
+<BR>
+<A HREF="Sender.html" title="class in com.google.android.gcm.server" target="classFrame">Sender</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Exceptions</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="InvalidRequestException.html" title="class in com.google.android.gcm.server" target="classFrame">InvalidRequestException</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
new file mode 100644
index 0000000..27b0564
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
@@ -0,0 +1,187 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+com.google.android.gcm.server
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="com.google.android.gcm.server";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/package-summary.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.google.android.gcm.server
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A></B></TD>
+<TD>Constants used on GCM service communication.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A></B></TD>
+<TD>GCM message.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A></B></TD>
+<TD>Result of a GCM multicast message request .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A></B></TD>
+<TD>Result of a GCM message request that returned HTTP status code 200.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A></B></TD>
+<TD>Helper class to send messages to the GCM service using an API Key.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Exception Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A></B></TD>
+<TD>Exception thrown when GCM returned an error due to an invalid request.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<DL>
+</DL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/package-summary.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
new file mode 100644
index 0000000..81efcef
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+com.google.android.gcm.server Class Hierarchy
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="com.google.android.gcm.server Class Hierarchy";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/package-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.google.android.gcm.server
+</H2>
+</CENTER>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">java.lang.Object<UL>
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="../../../../../com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server"><B>Constants</B></A><LI TYPE="circle">com.google.android.gcm.server.<A HREF="../../../../../com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server"><B>Message</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="../../../../../com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><B>Message.Builder</B></A><LI TYPE="circle">com.google.android.gcm.server.<A HREF="../../../../../com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server"><B>MulticastResult</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="../../../../../com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server"><B>Result</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="../../../../../com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server"><B>Sender</B></A><LI TYPE="circle">java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">java.lang.Exception<UL>
+<LI TYPE="circle">java.io.IOException<UL>
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="../../../../../com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server"><B>InvalidRequestException</B></A></UL>
+</UL>
+</UL>
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html?com/google/android/gcm/server/package-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/constant-values.html b/docs/html/guide/google/gcm/server-javadoc/constant-values.html
new file mode 100644
index 0000000..5efe6f5
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/constant-values.html
@@ -0,0 +1,356 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Constant Field Values
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Constant Field Values";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?constant-values.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Constant Field Values</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+<LI><A HREF="#com.google">com.google.*</A>
+</UL>
+
+<A NAME="com.google"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left"><FONT SIZE="+2">
+com.google.*</FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="3">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_DEVICE_QUOTA_EXCEEDED"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_DEVICE_QUOTA_EXCEEDED">ERROR_DEVICE_QUOTA_EXCEEDED</A></CODE></TD>
+<TD ALIGN="right"><CODE>"DeviceQuotaExceeded"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_INVALID_REGISTRATION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_INVALID_REGISTRATION">ERROR_INVALID_REGISTRATION</A></CODE></TD>
+<TD ALIGN="right"><CODE>"InvalidRegistration"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_MESSAGE_TOO_BIG"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_MESSAGE_TOO_BIG">ERROR_MESSAGE_TOO_BIG</A></CODE></TD>
+<TD ALIGN="right"><CODE>"MessageTooBig"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_MISMATCH_SENDER_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_MISMATCH_SENDER_ID">ERROR_MISMATCH_SENDER_ID</A></CODE></TD>
+<TD ALIGN="right"><CODE>"MismatchSenderId"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_MISSING_COLLAPSE_KEY"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_MISSING_COLLAPSE_KEY">ERROR_MISSING_COLLAPSE_KEY</A></CODE></TD>
+<TD ALIGN="right"><CODE>"MissingCollapseKey"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_MISSING_REGISTRATION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_MISSING_REGISTRATION">ERROR_MISSING_REGISTRATION</A></CODE></TD>
+<TD ALIGN="right"><CODE>"MissingRegistration"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_NOT_REGISTERED"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_NOT_REGISTERED">ERROR_NOT_REGISTERED</A></CODE></TD>
+<TD ALIGN="right"><CODE>"NotRegistered"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_QUOTA_EXCEEDED"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_QUOTA_EXCEEDED">ERROR_QUOTA_EXCEEDED</A></CODE></TD>
+<TD ALIGN="right"><CODE>"QuotaExceeded"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.ERROR_UNAVAILABLE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#ERROR_UNAVAILABLE">ERROR_UNAVAILABLE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"Unavailable"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.GCM_SEND_ENDPOINT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#GCM_SEND_ENDPOINT">GCM_SEND_ENDPOINT</A></CODE></TD>
+<TD ALIGN="right"><CODE>"https://android.googleapis.com/gcm/send"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_CANONICAL_IDS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_CANONICAL_IDS">JSON_CANONICAL_IDS</A></CODE></TD>
+<TD ALIGN="right"><CODE>"canonical_ids"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_ERROR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_ERROR">JSON_ERROR</A></CODE></TD>
+<TD ALIGN="right"><CODE>"error"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_FAILURE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_FAILURE">JSON_FAILURE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"failure"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_MESSAGE_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_MESSAGE_ID">JSON_MESSAGE_ID</A></CODE></TD>
+<TD ALIGN="right"><CODE>"message_id"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_MULTICAST_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_MULTICAST_ID">JSON_MULTICAST_ID</A></CODE></TD>
+<TD ALIGN="right"><CODE>"multicast_id"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_PAYLOAD"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_PAYLOAD">JSON_PAYLOAD</A></CODE></TD>
+<TD ALIGN="right"><CODE>"data"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_REGISTRATION_IDS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_REGISTRATION_IDS">JSON_REGISTRATION_IDS</A></CODE></TD>
+<TD ALIGN="right"><CODE>"registration_ids"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_RESULTS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_RESULTS">JSON_RESULTS</A></CODE></TD>
+<TD ALIGN="right"><CODE>"results"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.JSON_SUCCESS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#JSON_SUCCESS">JSON_SUCCESS</A></CODE></TD>
+<TD ALIGN="right"><CODE>"success"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.PARAM_COLLAPSE_KEY"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#PARAM_COLLAPSE_KEY">PARAM_COLLAPSE_KEY</A></CODE></TD>
+<TD ALIGN="right"><CODE>"collapse_key"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.PARAM_DELAY_WHILE_IDLE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#PARAM_DELAY_WHILE_IDLE">PARAM_DELAY_WHILE_IDLE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"delay_while_idle"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.PARAM_PAYLOAD_PREFIX"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#PARAM_PAYLOAD_PREFIX">PARAM_PAYLOAD_PREFIX</A></CODE></TD>
+<TD ALIGN="right"><CODE>"data."</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.PARAM_REGISTRATION_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#PARAM_REGISTRATION_ID">PARAM_REGISTRATION_ID</A></CODE></TD>
+<TD ALIGN="right"><CODE>"registration_id"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.PARAM_TIME_TO_LIVE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#PARAM_TIME_TO_LIVE">PARAM_TIME_TO_LIVE</A></CODE></TD>
+<TD ALIGN="right"><CODE>"time_to_live"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.TOKEN_CANONICAL_REG_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#TOKEN_CANONICAL_REG_ID">TOKEN_CANONICAL_REG_ID</A></CODE></TD>
+<TD ALIGN="right"><CODE>"registration_id"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.TOKEN_ERROR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#TOKEN_ERROR">TOKEN_ERROR</A></CODE></TD>
+<TD ALIGN="right"><CODE>"Error"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Constants.TOKEN_MESSAGE_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Constants.html#TOKEN_MESSAGE_ID">TOKEN_MESSAGE_ID</A></CODE></TD>
+<TD ALIGN="right"><CODE>"id"</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="3">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Sender.BACKOFF_INITIAL_DELAY"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>protected&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Sender.html#BACKOFF_INITIAL_DELAY">BACKOFF_INITIAL_DELAY</A></CODE></TD>
+<TD ALIGN="right"><CODE>1000</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Sender.MAX_BACKOFF_DELAY"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>protected&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Sender.html#MAX_BACKOFF_DELAY">MAX_BACKOFF_DELAY</A></CODE></TD>
+<TD ALIGN="right"><CODE>1024000</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.server.Sender.UTF8"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>protected&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/server/Sender.html#UTF8">UTF8</A></CODE></TD>
+<TD ALIGN="right"><CODE>"UTF-8"</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?constant-values.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/deprecated-list.html b/docs/html/guide/google/gcm/server-javadoc/deprecated-list.html
new file mode 100644
index 0000000..0082614
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/deprecated-list.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Deprecated List
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Deprecated List";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?deprecated-list.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Deprecated API</B></H2>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+</UL>
+
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?deprecated-list.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/help-doc.html b/docs/html/guide/google/gcm/server-javadoc/help-doc.html
new file mode 100644
index 0000000..72f9fb2
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/help-doc.html
@@ -0,0 +1,209 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+API Help
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="API Help";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?help-doc.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+How This API Document Is Organized</H1>
+</CENTER>
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
+Package</H3>
+<BLOCKQUOTE>
+
+<P>
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
+<LI>Interfaces (italic)<LI>Classes<LI>Enums<LI>Exceptions<LI>Errors<LI>Annotation Types</UL>
+</BLOCKQUOTE>
+<H3>
+Class/Interface</H3>
+<BLOCKQUOTE>
+
+<P>
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
+<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
+<P>
+<LI>Nested Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
+<P>
+<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
+</BLOCKQUOTE>
+<H3>
+Annotation Type</H3>
+<BLOCKQUOTE>
+
+<P>
+Each annotation type has its own separate page with the following sections:<UL>
+<LI>Annotation Type declaration<LI>Annotation Type description<LI>Required Element Summary<LI>Optional Element Summary<LI>Element Detail</UL>
+</BLOCKQUOTE>
+</BLOCKQUOTE>
+<H3>
+Enum</H3>
+<BLOCKQUOTE>
+
+<P>
+Each enum has its own separate page with the following sections:<UL>
+<LI>Enum declaration<LI>Enum description<LI>Enum Constant Summary<LI>Enum Constant Detail</UL>
+</BLOCKQUOTE>
+<H3>
+Tree (Class Hierarchy)</H3>
+<BLOCKQUOTE>
+There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
+<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
+</BLOCKQUOTE>
+<H3>
+Deprecated API</H3>
+<BLOCKQUOTE>
+The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
+<H3>
+Index</H3>
+<BLOCKQUOTE>
+The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
+<H3>
+Prev/Next</H3>
+These links take you to the next or previous class, interface, package, or related page.<H3>
+Frames/No Frames</H3>
+These links show and hide the HTML frames.  All pages are available with or without frames.
+<P>
+<H3>
+Serialized Form</H3>
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+<P>
+<H3>
+Constant Field Values</H3>
+The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.
+<P>
+<FONT SIZE="-1">
+<EM>
+This help file applies to API documentation generated using the standard doclet.</EM>
+</FONT>
+<BR>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?help-doc.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/index-all.html b/docs/html/guide/google/gcm/server-javadoc/index-all.html
new file mode 100644
index 0000000..e6325cb
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/index-all.html
@@ -0,0 +1,431 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Index
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="./stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Index";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="./allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="./allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<A HREF="#_A_">A</A> <A HREF="#_B_">B</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_G_">G</A> <A HREF="#_I_">I</A> <A HREF="#_J_">J</A> <A HREF="#_L_">L</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <HR>
+<A NAME="_A_"><!-- --></A><H2>
+<B>A</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Message.Builder.html#addData(java.lang.String, java.lang.String)"><B>addData(String, String)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A>
+<DD>Adds a key/value pair to the payload data.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#addParameter(java.lang.StringBuilder, java.lang.String, java.lang.String)"><B>addParameter(StringBuilder, String, String)</B></A> - 
+Static method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Adds a new parameter to the HTTP POST body.
+</DL>
+<HR>
+<A NAME="_B_"><!-- --></A><H2>
+<B>B</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#BACKOFF_INITIAL_DELAY"><B>BACKOFF_INITIAL_DELAY</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Initial delay before first retry, without jitter.
+<DT><A HREF="./com/google/android/gcm/server/Message.Builder.html#build()"><B>build()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_C_"><!-- --></A><H2>
+<B>C</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Message.Builder.html#collapseKey(java.lang.String)"><B>collapseKey(String)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A>
+<DD>Sets the collapseKey property.
+<DT><A HREF="./com/google/android/gcm/server/package-summary.html"><B>com.google.android.gcm.server</B></A> - package com.google.android.gcm.server<DD>&nbsp;<DT><A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server"><B>Constants</B></A> - Class in <A HREF="./com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</A><DD>Constants used on GCM service communication.</DL>
+<HR>
+<A NAME="_D_"><!-- --></A><H2>
+<B>D</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Message.Builder.html#delayWhileIdle(boolean)"><B>delayWhileIdle(boolean)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A>
+<DD>Sets the delayWhileIdle property (default value is false).
+</DL>
+<HR>
+<A NAME="_E_"><!-- --></A><H2>
+<B>E</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_DEVICE_QUOTA_EXCEEDED"><B>ERROR_DEVICE_QUOTA_EXCEEDED</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Too many messages sent by the sender to a specific device.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_INVALID_REGISTRATION"><B>ERROR_INVALID_REGISTRATION</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Bad registration_id.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_MESSAGE_TOO_BIG"><B>ERROR_MESSAGE_TOO_BIG</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>The payload of the message is too big, see the limitations.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_MISMATCH_SENDER_ID"><B>ERROR_MISMATCH_SENDER_ID</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>The sender_id contained in the registration_id does not match the
+ sender_id used to register with the GCM servers.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_MISSING_COLLAPSE_KEY"><B>ERROR_MISSING_COLLAPSE_KEY</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Collapse key is required.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_MISSING_REGISTRATION"><B>ERROR_MISSING_REGISTRATION</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Missing registration_id.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_NOT_REGISTERED"><B>ERROR_NOT_REGISTERED</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>The user has uninstalled the application or turned off notifications.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_QUOTA_EXCEEDED"><B>ERROR_QUOTA_EXCEEDED</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Too many messages sent by the sender.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#ERROR_UNAVAILABLE"><B>ERROR_UNAVAILABLE</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Used to indicate that a particular message could not be sent because
+ the GCM servers were not available.
+</DL>
+<HR>
+<A NAME="_G_"><!-- --></A><H2>
+<B>G</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#GCM_SEND_ENDPOINT"><B>GCM_SEND_ENDPOINT</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Endpoint for sending messages.
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#getCanonicalIds()"><B>getCanonicalIds()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>Gets the number of successful messages that also returned a canonical
+ registration id.
+<DT><A HREF="./com/google/android/gcm/server/Result.html#getCanonicalRegistrationId()"><B>getCanonicalRegistrationId()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A>
+<DD>Gets the canonical registration id, if any.
+<DT><A HREF="./com/google/android/gcm/server/Message.html#getCollapseKey()"><B>getCollapseKey()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>
+<DD>Gets the collapse key.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#getConnection(java.lang.String)"><B>getConnection(String)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Gets an <CODE>HttpURLConnection</CODE> given an URL.
+<DT><A HREF="./com/google/android/gcm/server/Message.html#getData()"><B>getData()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>
+<DD>Gets the payload data, which is immutable.
+<DT><A HREF="./com/google/android/gcm/server/InvalidRequestException.html#getDescription()"><B>getDescription()</B></A> - 
+Method in exception com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A>
+<DD>Gets the error description.
+<DT><A HREF="./com/google/android/gcm/server/Result.html#getErrorCodeName()"><B>getErrorCodeName()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A>
+<DD>Gets the error code, if any.
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#getFailure()"><B>getFailure()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>Gets the number of failed messages.
+<DT><A HREF="./com/google/android/gcm/server/InvalidRequestException.html#getHttpStatusCode()"><B>getHttpStatusCode()</B></A> - 
+Method in exception com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A>
+<DD>Gets the HTTP Status Code.
+<DT><A HREF="./com/google/android/gcm/server/Result.html#getMessageId()"><B>getMessageId()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A>
+<DD>Gets the message id, if any.
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#getMulticastId()"><B>getMulticastId()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>Gets the multicast id.
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#getResults()"><B>getResults()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>Gets the results of each individual message, which is immutable.
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#getRetryMulticastIds()"><B>getRetryMulticastIds()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>Gets additional ids if more than one multicast message was sent.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#getString(java.io.InputStream)"><B>getString(InputStream)</B></A> - 
+Static method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Convenience method to convert an InputStream to a String.
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#getSuccess()"><B>getSuccess()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>Gets the number of successful messages.
+<DT><A HREF="./com/google/android/gcm/server/Message.html#getTimeToLive()"><B>getTimeToLive()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>
+<DD>Gets the time to live (in seconds).
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#getTotal()"><B>getTotal()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>Gets the total number of messages sent, regardless of the status.
+</DL>
+<HR>
+<A NAME="_I_"><!-- --></A><H2>
+<B>I</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server"><B>InvalidRequestException</B></A> - Exception in <A HREF="./com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</A><DD>Exception thrown when GCM returned an error due to an invalid request.<DT><A HREF="./com/google/android/gcm/server/InvalidRequestException.html#InvalidRequestException(int)"><B>InvalidRequestException(int)</B></A> - 
+Constructor for exception com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/server/InvalidRequestException.html#InvalidRequestException(int, java.lang.String)"><B>InvalidRequestException(int, String)</B></A> - 
+Constructor for exception com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">InvalidRequestException</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/server/Message.html#isDelayWhileIdle()"><B>isDelayWhileIdle()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>
+<DD>Gets the delayWhileIdle flag.
+</DL>
+<HR>
+<A NAME="_J_"><!-- --></A><H2>
+<B>J</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_CANONICAL_IDS"><B>JSON_CANONICAL_IDS</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the number of messages with a canonical
+ registration id.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_ERROR"><B>JSON_ERROR</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the error field of an individual request.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_FAILURE"><B>JSON_FAILURE</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the number of failed messages.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_MESSAGE_ID"><B>JSON_MESSAGE_ID</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field sent by GCM when a message was successfully sent.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_MULTICAST_ID"><B>JSON_MULTICAST_ID</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the id of the multicast request.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_PAYLOAD"><B>JSON_PAYLOAD</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the payload data.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_REGISTRATION_IDS"><B>JSON_REGISTRATION_IDS</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the registration ids.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_RESULTS"><B>JSON_RESULTS</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the result of each individual request.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#JSON_SUCCESS"><B>JSON_SUCCESS</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>JSON-only field representing the number of successful messages.
+</DL>
+<HR>
+<A NAME="_L_"><!-- --></A><H2>
+<B>L</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#logger"><B>logger</B></A> - 
+Variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_M_"><!-- --></A><H2>
+<B>M</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#MAX_BACKOFF_DELAY"><B>MAX_BACKOFF_DELAY</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Maximum delay before a retry.
+<DT><A HREF="./com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server"><B>Message</B></A> - Class in <A HREF="./com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</A><DD>GCM message.<DT><A HREF="./com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><B>Message.Builder</B></A> - Class in <A HREF="./com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</A><DD>&nbsp;<DT><A HREF="./com/google/android/gcm/server/Message.Builder.html#Message.Builder()"><B>Message.Builder()</B></A> - 
+Constructor for class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server"><B>MulticastResult</B></A> - Class in <A HREF="./com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</A><DD>Result of a GCM multicast message request .</DL>
+<HR>
+<A NAME="_N_"><!-- --></A><H2>
+<B>N</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#newBody(java.lang.String, java.lang.String)"><B>newBody(String, String)</B></A> - 
+Static method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Creates a <CODE>StringBuilder</CODE> to be used as the body of an HTTP POST.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#newKeyValues(java.lang.String, java.lang.String)"><B>newKeyValues(String, String)</B></A> - 
+Static method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Creates a map with just one key-value pair.
+</DL>
+<HR>
+<A NAME="_P_"><!-- --></A><H2>
+<B>P</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#PARAM_COLLAPSE_KEY"><B>PARAM_COLLAPSE_KEY</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>HTTP parameter for collapse key.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#PARAM_DELAY_WHILE_IDLE"><B>PARAM_DELAY_WHILE_IDLE</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>HTTP parameter for delaying the message delivery if the device is idle.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#PARAM_PAYLOAD_PREFIX"><B>PARAM_PAYLOAD_PREFIX</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Prefix to HTTP parameter used to pass key-values in the message payload.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#PARAM_REGISTRATION_ID"><B>PARAM_REGISTRATION_ID</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>HTTP parameter for registration id.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#PARAM_TIME_TO_LIVE"><B>PARAM_TIME_TO_LIVE</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Prefix to HTTP parameter used to set the message time-to-live.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#post(java.lang.String, java.lang.String)"><B>post(String, String)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Make an HTTP post to a given URL.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#post(java.lang.String, java.lang.String, java.lang.String)"><B>post(String, String, String)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_R_"><!-- --></A><H2>
+<B>R</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#random"><B>random</B></A> - 
+Variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server"><B>Result</B></A> - Class in <A HREF="./com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</A><DD>Result of a GCM message request that returned HTTP status code 200.</DL>
+<HR>
+<A NAME="_S_"><!-- --></A><H2>
+<B>S</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.lang.String, int)"><B>send(Message, String, int)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Sends a message to one device, retrying in case of unavailability.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#send(com.google.android.gcm.server.Message, java.util.List, int)"><B>send(Message, List&lt;String&gt;, int)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Sends a message to many devices, retrying in case of unavailability.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server"><B>Sender</B></A> - Class in <A HREF="./com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</A><DD>Helper class to send messages to the GCM service using an API Key.<DT><A HREF="./com/google/android/gcm/server/Sender.html#Sender(java.lang.String)"><B>Sender(String)</B></A> - 
+Constructor for class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Default constructor.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#sendNoRetry(com.google.android.gcm.server.Message, java.lang.String)"><B>sendNoRetry(Message, String)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Sends a message without retrying in case of service unavailability.
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#sendNoRetry(com.google.android.gcm.server.Message, java.util.List)"><B>sendNoRetry(Message, List&lt;String&gt;)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>Sends a message without retrying in case of service unavailability.
+</DL>
+<HR>
+<A NAME="_T_"><!-- --></A><H2>
+<B>T</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Message.Builder.html#timeToLive(int)"><B>timeToLive(int)</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server">Message.Builder</A>
+<DD>Sets the time to live, in seconds.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#TOKEN_CANONICAL_REG_ID"><B>TOKEN_CANONICAL_REG_ID</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Token returned by GCM when the requested registration id has a canonical
+ value.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#TOKEN_ERROR"><B>TOKEN_ERROR</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Token returned by GCM when there was an error sending a message.
+<DT><A HREF="./com/google/android/gcm/server/Constants.html#TOKEN_MESSAGE_ID"><B>TOKEN_MESSAGE_ID</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server">Constants</A>
+<DD>Token returned by GCM when a message was successfully sent.
+<DT><A HREF="./com/google/android/gcm/server/Message.html#toString()"><B>toString()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">Message</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/server/MulticastResult.html#toString()"><B>toString()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">MulticastResult</A>
+<DD>&nbsp;
+<DT><A HREF="./com/google/android/gcm/server/Result.html#toString()"><B>toString()</B></A> - 
+Method in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">Result</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_U_"><!-- --></A><H2>
+<B>U</B></H2>
+<DL>
+<DT><A HREF="./com/google/android/gcm/server/Sender.html#UTF8"><B>UTF8</B></A> - 
+Static variable in class com.google.android.gcm.server.<A HREF="./com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server">Sender</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A HREF="#_A_">A</A> <A HREF="#_B_">B</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_G_">G</A> <A HREF="#_I_">I</A> <A HREF="#_J_">J</A> <A HREF="#_L_">L</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> 
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="./allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="./allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/index.html b/docs/html/guide/google/gcm/server-javadoc/index.html
new file mode 100644
index 0000000..efcce9e
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/index.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Thu Jun 21 12:04:57 PDT 2012-->
+<TITLE>
+Generated Documentation (Untitled)
+</TITLE>
+<SCRIPT type="text/javascript">
+    targetPage = "" + window.location.search;
+    if (targetPage != "" && targetPage != "undefined")
+        targetPage = targetPage.substring(1);
+    if (targetPage.indexOf(":") != -1)
+        targetPage = "undefined";
+    function loadFrames() {
+        if (targetPage != "" && targetPage != "undefined")
+             top.classFrame.location = top.targetPage;
+    }
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+</HEAD>
+<FRAMESET cols="20%,80%" title="" onLoad="top.loadFrames()">
+<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+<FRAME src="com/google/android/gcm/server/package-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes">
+<NOFRAMES>
+<H2>
+Frame Alert</H2>
+
+<P>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<BR>
+Link to<A HREF="com/google/android/gcm/server/package-summary.html">Non-frame version.</A>
+</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/overview-tree.html b/docs/html/guide/google/gcm/server-javadoc/overview-tree.html
new file mode 100644
index 0000000..034838b
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/overview-tree.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Class Hierarchy
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Class Hierarchy";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For All Packages</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="com/google/android/gcm/server/package-tree.html">com.google.android.gcm.server</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">java.lang.Object<UL>
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/Constants.html" title="class in com.google.android.gcm.server"><B>Constants</B></A><LI TYPE="circle">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server"><B>Message</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/Message.Builder.html" title="class in com.google.android.gcm.server"><B>Message.Builder</B></A><LI TYPE="circle">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server"><B>MulticastResult</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server"><B>Result</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/Sender.html" title="class in com.google.android.gcm.server"><B>Sender</B></A><LI TYPE="circle">java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">java.lang.Exception<UL>
+<LI TYPE="circle">java.io.IOException<UL>
+<LI TYPE="circle">com.google.android.gcm.server.<A HREF="com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server"><B>InvalidRequestException</B></A></UL>
+</UL>
+</UL>
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/package-list b/docs/html/guide/google/gcm/server-javadoc/package-list
new file mode 100644
index 0000000..5955cc0
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/package-list
@@ -0,0 +1 @@
+com.google.android.gcm.server
diff --git a/docs/html/guide/google/gcm/server-javadoc/resources/inherit.gif b/docs/html/guide/google/gcm/server-javadoc/resources/inherit.gif
new file mode 100644
index 0000000..c814867
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/resources/inherit.gif
Binary files differ
diff --git a/docs/html/guide/google/gcm/server-javadoc/serialized-form.html b/docs/html/guide/google/gcm/server-javadoc/serialized-form.html
new file mode 100644
index 0000000..86cd61a
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/serialized-form.html
@@ -0,0 +1,355 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.6.0_20) on Thu Jun 21 12:04:57 PDT 2012 -->
+<TITLE>
+Serialized Form
+</TITLE>
+
+<META NAME="date" CONTENT="2012-06-21">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Serialized Form";
+    }
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+<HR>
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?serialized-form.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="serialized-form.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Serialized Form</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.google.android.gcm.server</B></FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.google.android.gcm.server.InvalidRequestException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class <A HREF="com/google/android/gcm/server/InvalidRequestException.html" title="class in com.google.android.gcm.server">com.google.android.gcm.server.InvalidRequestException</A> extends java.io.IOException implements Serializable</B></FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TH>
+</TR>
+</TABLE>
+
+<H3>
+status</H3>
+<PRE>
+int <B>status</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+description</H3>
+<PRE>
+java.lang.String <B>description</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.google.android.gcm.server.Message"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class <A HREF="com/google/android/gcm/server/Message.html" title="class in com.google.android.gcm.server">com.google.android.gcm.server.Message</A> extends java.lang.Object implements Serializable</B></FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TH>
+</TR>
+</TABLE>
+
+<H3>
+collapseKey</H3>
+<PRE>
+java.lang.String <B>collapseKey</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+delayWhileIdle</H3>
+<PRE>
+java.lang.Boolean <B>delayWhileIdle</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+timeToLive</H3>
+<PRE>
+java.lang.Integer <B>timeToLive</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+data</H3>
+<PRE>
+java.util.Map&lt;K,V&gt; <B>data</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.google.android.gcm.server.MulticastResult"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class <A HREF="com/google/android/gcm/server/MulticastResult.html" title="class in com.google.android.gcm.server">com.google.android.gcm.server.MulticastResult</A> extends java.lang.Object implements Serializable</B></FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TH>
+</TR>
+</TABLE>
+
+<H3>
+success</H3>
+<PRE>
+int <B>success</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+failure</H3>
+<PRE>
+int <B>failure</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+canonicalIds</H3>
+<PRE>
+int <B>canonicalIds</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+multicastId</H3>
+<PRE>
+long <B>multicastId</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+results</H3>
+<PRE>
+java.util.List&lt;E&gt; <B>results</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+retryMulticastIds</H3>
+<PRE>
+java.util.List&lt;E&gt; <B>retryMulticastIds</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.google.android.gcm.server.Result"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class <A HREF="com/google/android/gcm/server/Result.html" title="class in com.google.android.gcm.server">com.google.android.gcm.server.Result</A> extends java.lang.Object implements Serializable</B></FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TH>
+</TR>
+</TABLE>
+
+<H3>
+messageId</H3>
+<PRE>
+java.lang.String <B>messageId</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+canonicalRegistrationId</H3>
+<PRE>
+java.lang.String <B>canonicalRegistrationId</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+<H3>
+errorCode</H3>
+<PRE>
+java.lang.String <B>errorCode</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="com/google/android/gcm/server/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html?serialized-form.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="serialized-form.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/docs/html/guide/google/gcm/server-javadoc/stylesheet.css b/docs/html/guide/google/gcm/server-javadoc/stylesheet.css
new file mode 100644
index 0000000..6ea9e51
--- /dev/null
+++ b/docs/html/guide/google/gcm/server-javadoc/stylesheet.css
@@ -0,0 +1,29 @@
+/* Javadoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF; color:#000000 }
+
+/* Headings */
+h1 { font-size: 145% }
+
+/* Table colors */
+.TableHeadingColor     { background: #CCCCFF; color:#000000 } /* Dark mauve */
+.TableSubHeadingColor  { background: #EEEEFF; color:#000000 } /* Light mauve */
+.TableRowColor         { background: #FFFFFF; color:#000000 } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
+.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
+.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
+
+/* Navigation bar fonts and colors */
+.NavBarCell1    { background-color:#EEEEFF; color:#000000} /* Light mauve */
+.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */
+.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;}
+
+.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
+.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
+
diff --git a/docs/html/guide/google/index.jd b/docs/html/guide/google/index.jd
index 95c2816..2eb8344 100644
--- a/docs/html/guide/google/index.jd
+++ b/docs/html/guide/google/index.jd
@@ -2,96 +2,133 @@
 footer.hide=1
 @jd:body
 
-    
-   <p>Google offers a variety of services that help you build new revenue streams, enhance your app's capabilities, manage distribution and payloads, and track usage and installs. Many of the services use static libraries that you download through the Android SDK Manager and build into your app. Others are configurable directly from Google Play Android Developer Console.</p>
-   
-   <p>The sections below highlight some of the Google Services and link you to more information about how to use them in your Android app. </p>
-  
-
-<h2 id="monetization">Monetize Your App</h2>
-
-<div class="vspace size-1">&nbsp;</div>
+<p>
+  Google offers a variety of services that help you build new revenue streams, enhance your app's
+  capabilities, manage distribution and payloads, and track usage and installs. 
+  The sections below highlight some of the services offered by Google and link you to more information about
+  how to use them in your Android app.
+</p>
+<h2 id="monetization">
+  Monetize your app
+</h2>
+<p>
+  There are many ways to monetize your Android app, such as with ad impressions or In-App billing. If you
+  choose to charge a price to download your app, Android also provides the ability to check
+  for valid application licenses to protect your revenue. Because different apps require
+  different strategies, you can pick which ones are best for your app.
+</p>
+<div class="vspace size-1">
+  &nbsp;
+</div>
 <div class="layout-content-row">
-
   <div class="layout-content-col span-4">
-	  <h4>In-App Billing</h4>
-  		<p>Keep your users engaged by offering in-app purchases and subscriptions directly in your app.
-  		</p>
-   		<a href="{@docRoot}guide/google/play/billing/index.html">Learn more &raquo;</a>
+    <h4>
+      Google AdMob Ads
+    </h4>
+    <p>
+      Generate revenue by displaying ads in your app with multiple ad networks.
+    </p><a href="http://www.google.com/ads/admob/index.html">Learn more &raquo;</a>
   </div>
-
   <div class="layout-content-col span-4">
-		<h4>Google AdMob Ads</h4>
-		<p>Generate more revenue from your app by
-		displaying ads from multiple ad networks.</p>
-   	<a href="https://developers.google.com/mobile-ads-sdk/docs/android/fundamentals">Learn more &raquo;</a>
+    <h4>
+      In-App Billing
+    </h4>
+    <p>
+      Engage users by offering features such as new content or virtual goods directly in your app.
+    </p><a href="{@docRoot}guide/google/play/billing/index.html">Learn more &raquo;</a>
   </div>
-  
   <div class="layout-content-col span-4">
-			<h4>Application Licensing</h4>
-			<p>Protect your revenue streams and integrate policies for usage into your app.</p>
-			<a href="{@docRoot}guide/google/play/licensing/index.html">Learn more &raquo;</a>
+    <h4>
+      Application Licensing
+    </h4>
+    <p>Protect your revenue streams and integrate policies for usage into your a
+pp.
+    </p><a href="{@docRoot}guide/google/play/licensing/index.html">Learn more &raquo;</a>
   </div>
-
 </div>
-
-<h2 id="integration">Manage App Distribution</h2>
-
-<div class="vspace size-1">&nbsp;</div>
-
+<h2 id="integration">
+  Enhance Your App's Capabilities
+</h2>
+<p>
+  Android and Google technologies work together to provide your users with compelling interactions
+  with technologies such as Maps and Google+.
+</p>
+<div class="vspace size-1">
+  &nbsp;
+</div>
 <div class="layout-content-row">
-
-<div class="layout-content-col span-4">
-
-<h4>Google Play Filters</h4>
-<p>Make sure your app gets to the right users by
-declaring the hardware and software features needed by your app.</p>
-<a href="{@docRoot}guide/google/play/filters.html">Learn more &raquo;</a>
-</div>
-
   <div class="layout-content-col span-4">
-<h4>Multiple APK Support</h4>
-<p>Distribute different APKs based on a variety of properties such as platform version, screen size, and GLES texture compression support.</p>
-<a href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Learn more &raquo;</a>
-</div>
-
+    <h4>
+      Google Play Services
+    </h4><img src="{@docRoot}images/play_dev.png">
+    <p>
+      Leverage Google products in your app with an easy to use authentication flow for your users.
+    </p><a href="{@docRoot}guide/google/play/services.html">Learn more &raquo;</a>
+  </div>
   <div class="layout-content-col span-4">
-
-<h4>APK Expansion files</h4>
-<p>Take load off of your servers and utilize APK expansion files
-to deliver up to 4 GB of assets for your Android app, free.</p>
- 
-<a href="{@docRoot}guide/google/play/expansion-files.html">Learn more &raquo;</a>
+    <h4>
+      Google Cloud Messaging
+    </h4><img src="{@docRoot}images/gcm-logo.png" width="150px" style="padding:9px;">
+    <p>
+      Notify your apps of important events with messages that are lightweight and battery-saving.
+    </p><a href="{@docRoot}guide/google/gcm/index.html">Learn more &raquo;</a>
+  </div>
+  <div class="layout-content-col span-4">
+    <h4>
+      Google Maps
+    </h4><img src="{@docRoot}images/google-apis.png">
+    <p>
+      The Google Maps library for Android brings powerful mapping capabilities to your app.
+    </p><a href="https://developers.google.com/android/add-ons/google-apis/index">Learn more
+    &raquo;</a>
+  </div>
 </div>
-
+<h2 id="integration">
+  Manage App Distribution
+</h2>
+<p>
+  Google Play allows you to manage your app distribution with features that let you control which users
+  can download your app as well as deliver separate versions of your app based on certain
+  characteristics like platform version.
+</p>
+<div class="vspace size-1">
+  &nbsp;
 </div>
-
-<h2 id="integration">Enhance Your App's Capabilities</h2>
-
-<div class="vspace size-1">&nbsp;</div>
-
 <div class="layout-content-row">
-
-<div class="layout-content-col span-4">
-  <h4>Android Cloud-to-Device Messaging </h4>
-  <p>Notify your apps of events with push messages that are lightweight
-   and battery-saving.</p>
-  <a href="https://developers.google.com/android/c2dm/">Learn more &raquo;</a>
+  <div class="layout-content-col span-4">
+    <h4>
+      Filters on Google Play
+    </h4>
+    <p>
+      Make sure your app gets to the right users by filtering on a wide range of characteristics
+      such as platform versions and hardware features.
+    </p><a href="{@docRoot}guide/google/play/filters.html">Learn more &raquo;</a>
+  </div>
+  <div class="layout-content-col span-4">
+    <h4>
+      Multiple APK Support
+    </h4>
+    <p>
+      Distribute different APKs based on a variety of properties such as platform version, screen
+      size, and GLES texture compression support.
+    </p><a href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Learn more &raquo;</a>
+  </div>
+  <div class="layout-content-col span-4">
+    <h4>
+      APK Expansion files
+    </h4>
+    <p>
+      Tap into Google's content delivery services by serving up to 4GB of assets for free. Provide
+      users with high-fidelity graphics, media files, or other large assets that are required by
+      your app.
+    </p><a href="{@docRoot}guide/google/play/expansion-files.html">Learn more &raquo;</a>
+  </div>
 </div>
-
-<div class="layout-content-col span-4">
-	<h4>Google Maps</h4>
-  <p> The Google Maps library for Android lets you add powerful mapping and geo-location capabilities to your app.</p>
-  <a href="https://developers.google.com/maps/documentation/android/">Learn more &raquo;</a>
-</div>
-</div>
-
-
-<h2 id="integration">Track Performance with Analytics</h2>
-<p>Google Analytics gives you powerful insights into how users find your apps
-	and how they use them. <br />Start integrating analytics to measure
-	your app's success.</p>
-	
-	
-<div style="margin-bottom:1.5em;"><a href="https://developers.google.com/analytics/devguides/collection/android/">Learn more &raquo;</a></div>
-   
\ No newline at end of file
+<h2 id="integration">
+  Track Performance with Analytics
+</h2>
+<p>
+  Google Analytics let you find out how users find your apps and how they use them. Start
+  integrating analytics to measure your app's success.
+</p><a href="https://developers.google.com/analytics/devguides/collection/android/">Learn more
+&raquo;</a>
diff --git a/docs/html/guide/google/play/index.jd b/docs/html/guide/google/play/index.jd
deleted file mode 100644
index b11bcdc..0000000
--- a/docs/html/guide/google/play/index.jd
+++ /dev/null
@@ -1,16 +0,0 @@
-page.title=Google Play APIs
-page.landing=1
-page.landing.intro=When you ditribute your Android app using Google Play you have the opportunity to enhance your app's capabilities with services such as in-app billing and control your app distribution with advanced device filtering.
-@jd:body
-
-
-<div class="distribute-features col-13">
-  <ul>
-    <li><h5>Monetize with in-app billing</h5>Lorem ipsum dolor sit amet, soldum
-consectetur adipiscing elit. <a href="#">Learn more &raquo;</a></li>
-    <li><h5>Control your app distribution</h5>Lorem ipsum dolor sit amet, soldum consectetur
-adipiscing elit. <a href="#">Learn more &raquo;</a></li>
-    <li class="last"><h5>Protect from piracy</h5>Lorem ipsum dolor sit amet, soldum
-consectetur adipiscing elit. <a href="#">Learn more &raquo;</a></li>
-  </ul>
-</div>
\ No newline at end of file
diff --git a/docs/html/guide/google/play/services.jd b/docs/html/guide/google/play/services.jd
new file mode 100644
index 0000000..e88d31f
--- /dev/null
+++ b/docs/html/guide/google/play/services.jd
@@ -0,0 +1,25 @@
+page.title=Google Play Services
+
+@jd:body
+
+<p>Google Play services is a platform that is delivered through the Google Play Store that
+    offers integration with Google products, such as Google+, into Android apps.
+    The Google Play services framework consists of a services component
+    that runs on the device and a thin client library that you package with your app. </p>
+    
+
+<div class="distribute-features col-13">
+  <ul>
+    <li style="border-top: 1px solid #F80;"><h5>Easy Authentication</h5> Your app can leverage the user's
+    existing Google account on the device without having to go through
+    tedious authentication flows. A few clicks from the user and you're set!
+    <br /> <a href="https://developers.google.com/android/google-play-services">Learn more &raquo;</a>
+ </li>
+    <li style="border-top: 1px solid #F80;"><h5>Google+ Integration</h5>Google Play Services lets you
+    	read from and write to your user's Google+ activity stream, giving your
+    	app an easy way to integrate with Google+.
+    <br /> <a href="https://developers.google.com/android/google-play-services">Learn more &raquo;</a>
+    </li>
+  </ul>
+  
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index fee1f35..94b9773 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -311,26 +311,26 @@
         <li><a href="<?cs var:toroot ?>guide/topics/graphics/hardware-accel.html">
             <span class="en">Hardware Acceleration</span>
           </a></li>
-        <li class="nav-section">
-            <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/index.html">
-              <span class="en">Renderscript</span>
-            </a></div>
-            <ul>
-              <li><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/graphics.html">
-                    <span class="en">Graphics</span></a>
-                  </li>
-              <li><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/compute.html">
-                    <span class="en">Compute</span></a>
-                  </li>
-              <li><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/reference.html">
-                    <span class="en">Runtime API Reference</span></a>
-                  </li>
-             </ul>
-          </li>
        </ul>
     </li><!-- end of graphics and animation-->
 
-            
+   <li class="nav-section">
+            <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/renderscript/index.html">
+              <span class="en">Computation</span>
+            </a></div>
+            <ul>
+              <li><a href="<?cs var:toroot ?>guide/topics/renderscript/compute.html">
+                    <span class="en">Renderscript</span></a>
+                  </li>
+
+              <li><a href="<?cs var:toroot ?>guide/topics/renderscript/advanced.html">
+                    <span class="en">Advanced Renderscript</span></a>
+                  </li>
+              <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference.html">
+                    <span class="en">Runtime API Reference</span></a>
+              </li>
+             </ul>
+   </li>
       <li class="nav-section">
           <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/media/index.html">
             <span class="en">Media and Camera</span>
@@ -410,7 +410,6 @@
             <ul>
               <li><a href="<?cs var:toroot ?>guide/topics/connectivity/usb/accessory.html">Accessory</a></li>
               <li><a href="<?cs var:toroot ?>guide/topics/connectivity/usb/host.html">Host</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/connectivity/usb/adk.html">Open Accessory Dev Kit</a></li>
             </ul>
      </li>
      <li><a href="<?cs var:toroot?>guide/topics/connectivity/sip.html">
@@ -589,6 +588,7 @@
           </li>
         </ul>
       </li>
+
       <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/google/play/licensing/index.html">
           <span class="en">Application Licensing</span></a>
@@ -607,8 +607,11 @@
               <span class="en">Licensing Reference</span></a>
           </li>
         </ul>
-      </li>       
-      <li><a href="<?cs var:toroot ?>guide/google/play/filters.html">
+      </li>
+      <li><a href="<?cs var:toroot ?>guide/google/play/services.html">
+          <span class="en">Google Play Services</span></a>
+      </li>
+       <li><a href="<?cs var:toroot ?>guide/google/play/filters.html">
           <span class="en">Filters on Google Play</span></a>
       </li>
       <li><a href="<?cs var:toroot ?>guide/google/play/publishing/multiple-apks.html">
@@ -617,6 +620,29 @@
       <li><a href="<?cs var:toroot ?>guide/google/play/expansion-files.html">
           <span class="en">APK Expansion Files</span></a>
       </li>
+      
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/google/gcm/index.html">
+          <span class="en">Google Cloud Messaging</span></a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot?>guide/google/gcm/gs.html">
+              <span class="en">Getting Started</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/gcm/gcm.html">
+              <span class="en">Architectural Overview</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/gcm/demo.html">
+              <span class="en">Demo App Tutorial</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/gcm/adv.html">
+              <span class="en">Advanced Topics</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/gcm/c2dm.html">
+              <span class="en">Migration</span></a>
+          </li>
+        </ul>
+      </li>
 
     </ul>
   </li><!-- end Google Play -->
diff --git a/docs/html/guide/topics/graphics/renderscript/compute.jd b/docs/html/guide/topics/graphics/renderscript/compute.jd
deleted file mode 100644
index e827f00..0000000
--- a/docs/html/guide/topics/graphics/renderscript/compute.jd
+++ /dev/null
@@ -1,253 +0,0 @@
-page.title=Compute
-parent.title=Renderscript
-parent.link=index.html
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-
-    <ol>
-      <li>
-        <a href="#creating">Creating a Compute Renderscript</a>
-
-        <ol>
-          <li><a href="#creating-renderscript">Creating the Renderscript file</a></li>
-
-          <li><a href="#calling">Calling the Renderscript code</a></li>
-        </ol>
-      </li>
-    </ol>
-
-    <h2>Related Samples</h2>
-
-    <ol>
-      <li><a href="{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">Hello
-      Compute</a></li>
-
-      <li><a href="{@docRoot}resources/samples/RenderScript/Balls/index.html">Balls</a></li>
-    </ol>
-  </div>
-</div>
-
-<p>Renderscript exposes a set of compute APIs that you can use to do intensive computational
-operations. You can use the compute APIs in the context of a graphics Renderscript such as
-calculating the positions of many objects in a scene. You can also create standalone compute
-Renderscripts such as one that does image processing for a photo editor application.</p>
-
-<p>Compute Renderscripts scale to the amount of
-processing cores available on the device. This is enabled through a function named
-<code>rsForEach()</code> (or the <code>forEach_root()</code> method at the Android framework level).
-that automatically partitions work across available processing cores on the device. 
-For now, compute Renderscripts can only take advantage of CPU
-cores, but in the future, they can potentially run on other types of processors such as GPUs and
-DSPs.</p>
-
-<h2 id="creating-renderscript">Creating a Compute Renderscript</h2>
-
-<p>Implementing a compute Renderscript creating a <code>.rs</code> file that contains
-your Renderscript code and calling it at the Android framework level with the
-<code>forEach_root()</code> or at the Renderscript runtime level with the
-<code>rsForEach()</code> function. The following diagram describes how a typical compute
-Renderscript is set up:</p><img src="{@docRoot}images/rs_compute.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Compute Renderscript overview</p>
-
-<p>The following sections describe how to create a simple compute Renderscript and use it in an
-Android application. This example uses the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute Renderscript
-sample</a> that is provided in the SDK as a guide (some code has been modified from its original
-form for simplicity).</p>
-
-<h3 id="creating-renderscript">Creating the Renderscript file</h3>
-
-<p>Your Renderscript code resides in <code>.rs</code> and <code>.rsh</code> files in the
-<code>&lt;project_root&gt;/src/</code> directory. This code contains the compute logic
-and declares all necessary variables and pointers.
-Every compute <code>.rs</code> file generally contains the following items:</p>
-
-<ul>
-  <li>A pragma declaration (<code>#pragma rs java_package_name(<em>package.name</em>)</code>)
-  that declares the package name of the <code>.java</code> reflection of this Renderscript.</li>
-
-  <li>A pragma declaration (<code>#pragma version(1)</code>) that declares the version of
-  Renderscript that you are using (1 is the only value for now).</li>
-
-  <li>A <code>root()</code> function that is the main worker function. The root function is
-  called by the <code>rsForEach</code> function, which allows the Renderscript code to be called and
-  executed on multiple cores if they are available. The <code>root()</code> function must return
-  <code>void</code> and accept the following arguments:
-
-    <ul>
-      <li>Pointers to memory allocations that are used for the input and output of the compute
-      Renderscript. Both of these pointers are required for Android 3.2 (API level 13) platform
-      versions or older. Android 4.0 (API level 14) and later requires one or both of these
-      allocations.</li>
-    </ul>
-
-    <p>The following arguments are optional, but both must be supplied if you choose to use
-    them:</p>
-
-    <ul>
-      <li>A pointer for user-defined data that the Renderscript might need to carry out
-      computations in addition to the necessary allocations. This can be a pointer to a simple
-      primitive or a more complex struct.</li>
-
-      <li>The size of the user-defined data.</li>
-    </ul>
-  </li>
-
-  <li>An optional <code>init()</code> function. This allows you to do any initialization 
-  before the <code>root()</code> function runs, such as initializing variables. This
-  function runs once and is called automatically when the Renderscript starts, before anything
-  else in your Renderscript.</li>
-
-  <li>Any variables, pointers, and structures that you wish to use in your Renderscript code (can
-  be declared in <code>.rsh</code> files if desired)</li>
-</ul>
-
-<p>The following code shows how the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/src/com/example/android/rs/hellocompute/mono.html">
-mono.rs</a> file is implemented:</p>
-<pre>
-#pragma version(1)
-#pragma rs java_package_name(com.example.android.rs.hellocompute)
-
-//multipliers to convert a RGB colors to black and white
-const static float3 gMonoMult = {0.299f, 0.587f, 0.114f};
-
-void root(const uchar4 *v_in, uchar4 *v_out) {
-  //unpack a color to a float4
-  float4 f4 = rsUnpackColor8888(*v_in);
-  //take the dot product of the color and the multiplier
-  float3 mono = dot(f4.rgb, gMonoMult);
-  //repack the float to a color
-  *v_out = rsPackColorTo8888(mono);
-}
-</pre>
-
-<h3 id="calling">Calling the Renderscript code</h3>
-
-<p>You can do Renderscript to Renderscript calls with <code>rsForEach</code> in situations
-such as when a graphics Renderscript needs to do a lot of computational operations. The Renderscript
-<a href="{@docRoot}resources/samples/RenderScript/Balls/index.html">Balls</a> sample shows how
-this is setup. The <a href=
-"resources/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.html">balls.rs</a>
-graphics Renderscript calls the <a href=
-"resources/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.html">balls_physics.rs</a>
-compute Renderscript to calculate the location of the balls that are rendered to the screen.</p>
-
-<p>Another way to use a compute Renderscript is to call it from your Android framework code by
-creating a Renderscript object by instantiating the (<code>ScriptC_<em>script_name</em></code>)
-class. This class contains a method, <code>forEach_root()</code>, that lets you invoke
-<code>rsForEach</code>. You give it the same parameters that you would if you were invoking it
-at the Renderscript runtime level. This technique allows your Android application to offload
-intensive mathematical calculations to Renderscript. See the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample to see
-how a simple Android application can utilize a compute Renderscript.</p>
-
-<p>To call a compute Renderscript at the Android framework level:</p>
-
-<ol>
-  <li>Allocate memory that is needed by the compute Renderscript in your Android framework code.
-  You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
-  13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
-  one or both {@link android.renderscript.Allocation}s.</li>
-
-  <li>Create an instance of the <code>ScriptC_<em>script_name</em></code> class.</li>
-
-  <li>Call <code>forEach_root()</code>, passing in the allocations, the
-  Renderscript, and any optional user-defined data. The output allocation will contain the output
-  of the compute Renderscript.</li>
-</ol>
-
-<p>In the following example, taken from the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample, processes
-a bitmap and outputs a black and white version of it. The
-<code>createScript()</code> method carries out the steps described previously. This method the compute
-Renderscript, <code>mono.rs</code>, passing in memory allocations that store the bitmap to be processed
-as well as the eventual output bitmap. It then displays the processed bitmap onto the screen:</p>
-<pre>
-package com.example.android.rs.hellocompute;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.graphics.BitmapFactory;
-import android.graphics.Bitmap;
-import android.renderscript.RenderScript;
-import android.renderscript.Allocation;
-import android.widget.ImageView;
-
-public class HelloCompute extends Activity {
-  private Bitmap mBitmapIn;
-  private Bitmap mBitmapOut;
-
-  private RenderScript mRS;
-  private Allocation mInAllocation;
-  private Allocation mOutAllocation;
-  private ScriptC_mono mScript;
-
-  &#064;Override
-  protected void onCreate(Bundle savedInstanceState) {
-      super.onCreate(savedInstanceState);
-      setContentView(R.layout.main);
-
-      mBitmapIn = loadBitmap(R.drawable.data);
-      mBitmapOut = Bitmap.createBitmap(mBitmapIn.getWidth(), mBitmapIn.getHeight(),
-                                       mBitmapIn.getConfig());
-
-      ImageView in = (ImageView) findViewById(R.id.displayin);
-      in.setImageBitmap(mBitmapIn);
-
-      ImageView out = (ImageView) findViewById(R.id.displayout);
-      out.setImageBitmap(mBitmapOut);
-
-      createScript();
-  }
-  private void createScript() {
-      mRS = RenderScript.create(this);
-      mInAllocation = Allocation.createFromBitmap(mRS, mBitmapIn,
-          Allocation.MipmapControl.MIPMAP_NONE,
-          Allocation.USAGE_SCRIPT);
-      mOutAllocation = Allocation.createTyped(mRS, mInAllocation.getType());
-      mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono);
-      mScript.forEach_root(mInAllocation, mOutAllocation);
-      mOutAllocation.copyTo(mBitmapOut);
-  }
-
-  private Bitmap loadBitmap(int resource) {
-      final BitmapFactory.Options options = new BitmapFactory.Options();
-      options.inPreferredConfig = Bitmap.Config.ARGB_8888;
-      return BitmapFactory.decodeResource(getResources(), resource, options);
-  }
-}
-</pre>
-
-<p>To call a compute Renderscript from another Renderscript file:</p>
-<ol>
- <li>Allocate memory that is needed by the compute Renderscript in your Android framework code.
-  You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
-  13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
-  one or both {@link android.renderscript.Allocation}s.</li>
-
-  <li>Call <code>rsForEach()</code>, passing in the allocations and any optional user-defined data.
-  The output allocation will contain the output of the compute Renderscript.</li>
-</ol>
-<p>The following example, taken from the <a href=
-"{@docRoot}resources/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.html">Renderscript
-Balls sample</a>, demonstrates how to do make a script to script call:</p>
-<pre>
-rs_script script;
-rs_allocation in_allocation;
-rs_allocation out_allocation;
-UserData_t data;
-...
-rsForEach(script, in_allocation, out_allocation, &amp;data, sizeof(data));
-</pre>
-
-<p>In this example, assume that the script and memory allocations have already been
-allocated and bound at the Android framework level and that <code>UserData_t</code> is a struct
-declared previously. Passing a pointer to a struct and the size of the struct to <code>rsForEach</code>
-is optional, but useful if your compute Renderscript requires additional information other than
-the necessary memory allocations.</p>
diff --git a/docs/html/guide/topics/graphics/renderscript/index.jd b/docs/html/guide/topics/renderscript/advanced.jd
similarity index 84%
rename from docs/html/guide/topics/graphics/renderscript/index.jd
rename to docs/html/guide/topics/renderscript/advanced.jd
index b2d9f84..58f5e1f 100644
--- a/docs/html/guide/topics/graphics/renderscript/index.jd
+++ b/docs/html/guide/topics/renderscript/advanced.jd
@@ -1,4 +1,7 @@
-page.title=Renderscript
+page.title=Advanced Renderscript
+parent.title=Computation
+parent.link=index.html
+
 @jd:body
 
   <div id="qv-wrapper">
@@ -6,7 +9,6 @@
       <h2>In this document</h2>
 
       <ol>
-        <li><a href="#overview">Renderscript Overview</a></li>
         <li><a href="#native">Renderscript Runtime Layer</a></li>
         <li><a href="#reflected">Reflected Layer</a>
           <ol>
@@ -33,86 +35,22 @@
     </div>
   </div>
 
-  <p>Renderscript offers a high performance 3D graphics rendering and compute API at the native
-  level that you write in C (C99 standard). The main advantages of Renderscript are:</p>
-  <ul>
-    <li>Portability: Renderscript is designed to run on many types of devices with different
-    processor (CPU, GPU, and DSP for instance) architectures. It supports all of these architectures without
-    having to target each device, because the code is compiled and cached on the device
-    at runtime.</li>
+  <p></p>
 
-    <li>Performance: Renderscript provides similar performance to OpenGL with the NDK and also
-    provides a high performance compute API that is not offered by OpenGL.</li>
-
-    <li>Usability: Renderscript simplifies development when possible, such as eliminating JNI glue code
-    and simplifying mesh setup.</li>
-  </ul>
-
-  <p>The main disadvantages are:</p>
-
-  <ul>
-    <li>Development complexity: Renderscript introduces a new set of APIs that you have to learn.
-    Renderscript also allocates memory differently compared to OpenGL with the Android framework APIs.
-    However, these issues are not hard to understand and Renderscript offers many features that
-    make it easier than OpenGL to initialize rendering.</li>
-
-    <li>Debugging visibility: Renderscript can potentially execute (planned feature for later releases)
-    on processors other than the main CPU (such as the GPU), so if this occurs, debugging becomes more difficult.
-    </li>
-  </ul>
-
-
-  <p>For an example of Renderscript in action, install the Renderscript sample applications that
-  are shipped with the SDK in <code>&lt;sdk_root&gt;/samples/android-11/RenderScript</code>.
-  You can also see a typical use of Renderscript with the 3D carousel view in the Android 3.x
-  versions of Google Books and YouTube.</p>
-
-  <h2 id="overview">Renderscript Overview</h2>
-  <p>The Renderscript runtime operates at the native level and still needs to communicate
-with the Android VM, so the way a Renderscript application is setup is different from a pure VM
-application. An application that uses Renderscript is still a traditional Android application that
-runs in the VM, but you write Renderscript code for the parts of your program that require
-it. Using Renderscript can be as simple as offloading a few math calculations or as complicated as
-rendering an entire 3D game. No matter what you use it for, Renderscript remains platform
-independent, so you do not have to target multiple architectures (for example,
-ARM v5, ARM v7, x86).</p>
-
-  <p>The Renderscript system adopts a control and slave architecture where the low-level Renderscript runtime
-  code is controlled by the higher level Android system that runs in a virtual machine (VM). The
-  Android VM still retains all control of memory management and binds memory that it allocates to
-  the Renderscript runtime, so the Renderscript code can access it. The Android framework makes
-asynchronous calls to Renderscript, and the calls are placed in a message queue and processed
-as soon as possible. Figure 1 shows how the Renderscript system is structured.</p>
-
-   <img id="figure1" src="{@docRoot}images/rs_overview.png" />
-  <p class="img-caption"><strong>Figure 1.</strong> Renderscript system overview</p>
-
-  <p>When using Renderscript, there are three layers of APIs that enable communication between the
-  Renderscript runtime and Android framework code:</p>
-
-  <ul>
-    <li>The Renderscript runtime APIs allow you to do the computation or graphics rendering
-    that is required by your application.</li>
-
-    <li>The reflected layer APIs are a set of classes that are reflected from your Renderscript
-runtime code. It is basically a wrapper around the Renderscript code that allows the Android
-framework to interact with the Renderscript runtime. The Android build tools automatically generate the
-classes for this layer during the build process. These classes eliminate the need to write JNI glue
-code, like with the NDK.</li>
-
-    <li>The Android framework APIs, which include the {@link android.renderscript} package, allow you to
-    build your application using traditional Android components such as activities and views. When
-    using Renderscript, this layer calls the reflected layer to access the Renderscript
-    runtime.</li>
-  </ul>
-
- <p></p>
+  <p>Because applications that utilize Renderscript still run inside of the Android VM,
+  you have access to all of the framework APIs that you are familiar with, but can
+  utilize Renderscript when appropriate. To facilitate this interaction between
+  the framework and the Renderscript runtime, an intermediate layer of code is also
+  present to facilitate communication and memory management between the two levels of code.
+  This document goes into more detail about these
+  different layers of code as well as how memory is shared between the Android VM and
+  Renderscript runtime.</p>
 
   <h2 id="native">Renderscript Runtime Layer</h2>
 
   <p>Your Renderscript code is compiled and
   executed in a compact and well-defined runtime layer. The Renderscript runtime APIs offer support for
-intensive computation and graphics rendering that is portable and automatically scalable to the
+intensive computation that is portable and automatically scalable to the
 amount of cores available on a processor.
 </p>
 <p class="note"><strong>Note:</strong> The standard C functions in the NDK must be
@@ -132,16 +70,14 @@
 
   <ul>
 
-    <li>Graphics rendering functions</li>
-
     <li>Memory allocation request features</li>
 
     <li>A large collection of math functions with both scalar and vector typed overloaded versions
     of many common routines. Operations such as adding, multiplying, dot product, and cross product
     are available as well as atomic arithmetic and comparison functions.</li>
 
-    <li>Conversion routines for primitive data types and vectors, matrix routines, date and time
-    routines, and graphics routines.</li>
+    <li>Conversion routines for primitive data types and vectors, matrix routines, and date and time
+    routines</li>
 
     <li>Data types and structures to support the Renderscript system such as Vector types for
     defining two-, three-, or four-vectors.</li>
@@ -149,11 +85,7 @@
     <li>Logging functions</li>
   </ul>
 
-  <p>See the Renderscript runtime API reference for more information on the available functions. The
-  Renderscript header files are automatically included for you, except for the Renderscript graphics header file, which
-  you can include as follows:</p>
-
-<pre>#include "rs_graphics.rsh"</pre>
+  <p>See the Renderscript runtime API reference for more information on the available functions.
 
   <h2 id="reflected">Reflected Layer</h2>
 
@@ -428,14 +360,9 @@
         specified memory spaces. The following example allocates memory for a custom data type
         in both the script and vertex memory spaces:</p>
       <pre>
-        ScriptField_Point touchPoints = new ScriptField_Point(glRenderer, 2,
+        ScriptField_Point touchPoints = new ScriptField_Point(myRenderscript, 2,
         Allocation.USAGE_SCRIPT | Allocation.USAGE_GRAPHICS_VERTEX);
       </pre>
-
-      <p>If you modify the memory in one memory space and want to push the updates to the rest of
-        the memory spaces, call <a href="{@docRoot}reference/renderscript/rs__graphics_8rsh.html">
-        <code>rsgAllocationSyncAll()</code></a> in your Renderscript code to
-        synchronize the memory.</p>
     </li>
 
     <li>A static nested class, <code>Item</code>, allows you to create an instance of the
@@ -665,23 +592,22 @@
    <code>intPointer</code>, and a pointer to a struct, <code>touchPoints</code>. It also binds the memory to the
   Renderscript:</p>
   <pre>
-private RenderScriptGL glRenderer;
+private RenderScript myRenderscript;
 private ScriptC_example script;
 private Resources resources;
 
-public void init(RenderScriptGL rs, Resources res) {
-    //get the rendering context and resources from the calling method
-    glRenderer = rs;
+public void init(RenderScript rs, Resources res) {
+    myRenderscript = rs;
     resources = res;
 
     //allocate memory for the struct pointer, calling the constructor
-    ScriptField_Point touchPoints = new ScriptField_Point(glRenderer, 2);
+    ScriptField_Point touchPoints = new ScriptField_Point(myRenderscript, 2);
 
     //Create an element manually and allocate memory for the int pointer
-    intPointer = Allocation.createSized(glRenderer, Element.I32(glRenderer), 2);
+    intPointer = Allocation.createSized(myRenderscript, Element.I32(myRenderscript), 2);
 
     //create an instance of the Renderscript, pointing it to the bytecode resource
-    mScript = new ScriptC_example(glRenderer, resources, R.raw.example);
+    mScript = new ScriptC_example(myRenderscript, resources, R.raw.example);
 
     //bind the struct and int pointers to the Renderscript
     mScript.bind_touchPoints(touchPoints);
diff --git a/docs/html/guide/topics/renderscript/compute.jd b/docs/html/guide/topics/renderscript/compute.jd
new file mode 100644
index 0000000..d464c90
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/compute.jd
@@ -0,0 +1,340 @@
+page.title=Renderscript Computation 
+parent.title=Computation
+parent.link=index.html
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+
+    <ol>
+      <li><a href="#overview">Renderscript System Overview</a></li>
+      <li>
+        <a href="#creating-renderscript">Creating a Computation Renderscript</a>
+
+        <ol>
+          <li><a href="#creating-rs-file">Creating the Renderscript file</a></li>
+
+          <li><a href="#calling">Calling the Renderscript code</a></li>
+        </ol>
+      </li>
+    </ol>
+
+    <h2>Related Samples</h2>
+
+    <ol>
+      <li><a href="{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">Hello
+      Compute</a></li>
+    </ol>
+  </div>
+</div>
+
+ <p>Renderscript offers a high performance computation API at the native
+level that you write in C (C99 standard). Renderscript gives your apps the ability to run
+operations with automatic parallelization across all available processor cores.
+It also supports different types of processors such as the CPU, GPU or DSP. Renderscript
+is useful for apps that do image processing, mathematical modeling, or any operations
+that require lots of mathematical computation.</p>
+
+<p>In addition, you have access to all of these features without having to write code to
+support different architectures or a different amount of processing cores. You also
+do not need to recompile your application for different processor types, because Renderscript
+code is compiled on the device at runtime.</p>
+
+<p class="note"><strong>Deprecation Notice</strong>: Earlier versions of Renderscript included
+  an experimental graphics engine component. This component
+is now deprecated as of Android 4.1  (most of the APIs in <code>rs_graphics.rsh</code>
+and the corresponding APIs in {@link android.renderscript}).
+If you have apps that render graphics with Renderscript, we highly
+recommend you convert your code to another Android graphics rendering option.</p>
+
+  <h2 id="overview">Renderscript System Overview</h2>
+  <p>The Renderscript runtime operates at the native level and still needs to communicate
+with the Android VM, so the way a Renderscript application is set up is different from a pure VM
+application. An application that uses Renderscript is still a traditional Android application that
+runs in the VM, but you write Renderscript code for the parts of your program that require
+it. No matter what you use it for, Renderscript remains platform
+independent, so you do not have to target multiple architectures (for example,
+ARM v5, ARM v7, x86).</p>
+
+<p>The Renderscript system adopts a control and slave architecture where the low-level Renderscript runtime
+code is controlled by the higher level Android system that runs in a virtual machine (VM). The
+Android VM still retains all control of memory management and binds memory that it allocates to
+the Renderscript runtime, so the Renderscript code can access it. The Android framework makes
+asynchronous calls to Renderscript, and the calls are placed in a message queue and processed
+as soon as possible. Figure 1 shows how the Renderscript system is structured.</p>
+
+   <img id="figure1" src="{@docRoot}images/rs_overview.png" />
+  <p class="img-caption"><strong>Figure 1.</strong> Renderscript system overview</p>
+
+  <p>When using Renderscript, there are three layers of APIs that enable communication between the
+  Renderscript runtime and Android framework code:</p>
+
+  <ul>
+    <li>The Renderscript runtime APIs allow you to do the computation
+    that is required by your application.</li>
+
+    <li>The reflected layer APIs are a set of classes that are reflected from your Renderscript
+runtime code. It is basically a wrapper around the Renderscript code that allows the Android
+framework to interact with the Renderscript runtime. The Android build tools automatically generate the
+classes for this layer during the build process. These classes eliminate the need to write JNI glue
+code, like with the NDK.</li>
+
+    <li>The Android framework layer calls the reflected layer to access the Renderscript
+    runtime.</li>
+  </ul>
+
+<p>Because of the way Renderscript is structured, the main advantages are:</p>
+  <ul>
+    <li>Portability: Renderscript is designed to run on many types of devices with different
+    processor (CPU, GPU, and DSP for instance) architectures. It supports all of these architectures without
+    having to target each device, because the code is compiled and cached on the device
+    at runtime.</li>
+
+    <li>Performance: Renderscript provides a high performance computation API with seamless parallelization
+      across the amount of cores on the device.</li>
+
+    <li>Usability: Renderscript simplifies development when possible, such as eliminating JNI glue code.</li>
+  </ul>
+
+  <p>The main disadvantages are:</p>
+
+  <ul>
+    <li>Development complexity: Renderscript introduces a new set of APIs that you have to learn.</li>
+
+    <li>Debugging visibility: Renderscript can potentially execute (planned feature for later releases)
+    on processors other than the main CPU (such as the GPU), so if this occurs, debugging becomes more difficult.
+    </li>
+  </ul>
+
+<p>For a more detailed explanation of how all of these layers work together, see
+  <a href="{@docRoot}guide/topics/renderscript/advanced.html">Advanced Renderscript</a>.<p>
+
+
+<h2 id="creating-renderscript">Creating a Renderscript</h2>
+
+<p>Renderscripts scale to the amount of
+processing cores available on the device. This is enabled through a function named
+<code>rsForEach()</code> (or the <code>forEach_root()</code> method at the Android framework level).
+that automatically partitions work across available processing cores on the device. 
+For now, Renderscript can only take advantage of CPU
+cores, but in the future, they can potentially run on other types of processors such as GPUs and
+DSPs.</p>
+
+<p>Implementing a Renderscript involves creating a <code>.rs</code> file that contains
+your Renderscript code and calling it at the Android framework level with the
+<code>forEach_root()</code> or at the Renderscript runtime level with the
+<code>rsForEach()</code> function. The following diagram describes how a typical
+Renderscript is set up:</p><img src="{@docRoot}images/rs_compute.png">
+
+<p class="img-caption"><strong>Figure 1.</strong> Renderscript overview</p>
+
+<p>The following sections describe how to create a simple Renderscript and use it in an
+Android application. This example uses the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute Renderscript
+sample</a> that is provided in the SDK as a guide (some code has been modified from its original
+form for simplicity).</p>
+
+<h3 id="creating-rs-file">Creating the Renderscript file</h3>
+
+<p>Your Renderscript code resides in <code>.rs</code> and <code>.rsh</code> files in the
+<code>&lt;project_root&gt;/src/</code> directory. This code contains the computation logic
+and declares all necessary variables and pointers.
+Every <code>.rs</code> file generally contains the following items:</p>
+
+<ul>
+  <li>A pragma declaration (<code>#pragma rs java_package_name(<em>package.name</em>)</code>)
+  that declares the package name of the <code>.java</code> reflection of this Renderscript.</li>
+
+  <li>A pragma declaration (<code>#pragma version(1)</code>) that declares the version of
+  Renderscript that you are using (1 is the only value for now).</li>
+
+  <li><p>A <code>root()</code> function that is the main worker function. The root function is
+  called by the <code>rsForEach</code> function, which allows the Renderscript code to be called and
+  executed on multiple cores if they are available. The <code>root()</code> function must return
+  <code>void</code> and accept the following arguments:</p>
+
+    <ul>
+      <li>Pointers to memory allocations that are used for the input and output of the
+      Renderscript. Both of these pointers are required for Android 3.2 (API level 13) platform
+      versions or older. Android 4.0 (API level 14) and later requires one or both of these
+      allocations.</li>
+    </ul>
+
+    <p>The following arguments are optional, but both must be supplied if you choose to use
+    them:</p>
+
+    <ul>
+      <li>A pointer for user-defined data that the Renderscript might need to carry out
+      computations in addition to the necessary allocations. This can be a pointer to a simple
+      primitive or a more complex struct.</li>
+
+      <li>The size of the user-defined data.</li>
+    </ul>
+  </li>
+
+  <li>An optional <code>init()</code> function. This allows you to do any initialization 
+  before the <code>root()</code> function runs, such as initializing variables. This
+  function runs once and is called automatically when the Renderscript starts, before anything
+  else in your Renderscript.</li>
+
+  <li>Any variables, pointers, and structures that you wish to use in your Renderscript code (can
+  be declared in <code>.rsh</code> files if desired)</li>
+</ul>
+
+<p>The following code shows how the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/src/com/example/android/rs/hellocompute/mono.html">
+mono.rs</a> file is implemented:</p>
+<pre>
+#pragma version(1)
+#pragma rs java_package_name(com.example.android.rs.hellocompute)
+
+//multipliers to convert a RGB colors to black and white
+const static float3 gMonoMult = {0.299f, 0.587f, 0.114f};
+
+void root(const uchar4 *v_in, uchar4 *v_out) {
+  //unpack a color to a float4
+  float4 f4 = rsUnpackColor8888(*v_in);
+  //take the dot product of the color and the multiplier
+  float3 mono = dot(f4.rgb, gMonoMult);
+  //repack the float to a color
+  *v_out = rsPackColorTo8888(mono);
+}
+</pre>
+
+<h3 id="calling">Calling the Renderscript code</h3>
+
+<p>You can call the Renderscript from your Android framework code by
+creating a Renderscript object by instantiating the (<code>ScriptC_<em>script_name</em></code>)
+class. This class contains a method, <code>forEach_root()</code>, that lets you invoke
+<code>rsForEach</code>. You give it the same parameters that you would if you were invoking it
+at the Renderscript runtime level. This technique allows your Android application to offload
+intensive mathematical calculations to Renderscript. See the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample to see
+how a simple Android application can utilize Renderscript.</p>
+
+<p>To call Renderscript at the Android framework level:</p>
+
+<ol>
+  <li>Allocate memory that is needed by the Renderscript in your Android framework code.
+  You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
+  13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
+  one or both {@link android.renderscript.Allocation}s.</li>
+
+  <li>Create an instance of the <code>ScriptC_<em>script_name</em></code> class.</li>
+
+  <li>Call <code>forEach_root()</code>, passing in the allocations, the
+  Renderscript, and any optional user-defined data. The output allocation will contain the output
+  of the Renderscript.</li>
+</ol>
+
+<p>The following example, taken from the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample, processes
+a bitmap and outputs a black and white version of it. The
+<code>createScript()</code> method carries out the steps described previously. This method calls the
+Renderscript, <code>mono.rs</code>, passing in memory allocations that store the bitmap to be processed
+as well as the eventual output bitmap. It then displays the processed bitmap onto the screen:</p>
+<pre>
+package com.example.android.rs.hellocompute;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.graphics.BitmapFactory;
+import android.graphics.Bitmap;
+import android.renderscript.RenderScript;
+import android.renderscript.Allocation;
+import android.widget.ImageView;
+
+public class HelloCompute extends Activity {
+  private Bitmap mBitmapIn;
+  private Bitmap mBitmapOut;
+
+  private RenderScript mRS;
+  private Allocation mInAllocation;
+  private Allocation mOutAllocation;
+  private ScriptC_mono mScript;
+
+  &#064;Override
+  protected void onCreate(Bundle savedInstanceState) {
+      super.onCreate(savedInstanceState);
+      setContentView(R.layout.main);
+
+      mBitmapIn = loadBitmap(R.drawable.data);
+      mBitmapOut = Bitmap.createBitmap(mBitmapIn.getWidth(), mBitmapIn.getHeight(),
+                                       mBitmapIn.getConfig());
+
+      ImageView in = (ImageView) findViewById(R.id.displayin);
+      in.setImageBitmap(mBitmapIn);
+
+      ImageView out = (ImageView) findViewById(R.id.displayout);
+      out.setImageBitmap(mBitmapOut);
+
+      createScript();
+  }
+  private void createScript() {
+      mRS = RenderScript.create(this);
+      mInAllocation = Allocation.createFromBitmap(mRS, mBitmapIn,
+          Allocation.MipmapControl.MIPMAP_NONE,
+          Allocation.USAGE_SCRIPT);
+      mOutAllocation = Allocation.createTyped(mRS, mInAllocation.getType());
+      mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono);
+      mScript.forEach_root(mInAllocation, mOutAllocation);
+      mOutAllocation.copyTo(mBitmapOut);
+  }
+
+  private Bitmap loadBitmap(int resource) {
+      final BitmapFactory.Options options = new BitmapFactory.Options();
+      options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+      return BitmapFactory.decodeResource(getResources(), resource, options);
+  }
+}
+</pre>
+
+<p>To call Renderscript from another Renderscript file:</p>
+<ol>
+ <li>Allocate memory that is needed by the Renderscript in your Android framework code.
+  You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
+  13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
+  one or both {@link android.renderscript.Allocation}s.</li>
+
+  <li>Call <code>rsForEach()</code>, passing in the allocations and any optional user-defined data.
+  The output allocation will contain the output of the Renderscript.</li>
+</ol>
+ 
+<pre>
+rs_script script;
+rs_allocation in_allocation;
+rs_allocation out_allocation;
+UserData_t data;
+...
+rsForEach(script, in_allocation, out_allocation, &amp;data, sizeof(data));
+</pre>
+</p>
+<p>In this example, assume that the script and memory allocations have already been
+allocated and bound at the Android framework level and that <code>UserData_t</code> is a struct
+declared previously. Passing a pointer to a struct and the size of the struct to <code>rsForEach</code>
+is optional, but useful if your Renderscript requires additional information other than
+the necessary memory allocations.</p>
+
+<h3>Setting floating point precision</h3>
+<p>You can define the floating point precision required by your compute algorithms. This is useful if you
+ require less precision than the IEEE 754-2008 standard (used by default). You can define
+the floating-point precision level of your script with the following pragmas:</p>
+
+<ul>
+  <li><code>#pragma rs_fp_full</code> (default if nothing is specified): For apps that
+    require floating point precision as outlined by the IEEE 754-2008 standard.
+</li>
+  <li><code>#pragma rs_fp_relaxed</code> - For apps that don’t require
+    strict IEEE 754-2008 compliance and can tolerate less precision. This mode enables
+    flush-to-zero for denorms and round-towards-zero.
+</li>
+  <li><code>#pragma rs_fp_imprecise</code> - For apps that don’t have stringent precision requirements. This mode enables
+    everything in <code>rs_fp_relaxed</code> along with the following:
+<ul>
+  <li>Operations resulting in -0.0 can return +0.0 instead.</li>
+  <li>Operations on INF and NAN are undefined.</li>
+</ul>
+</li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/guide/topics/renderscript/index.jd b/docs/html/guide/topics/renderscript/index.jd
new file mode 100644
index 0000000..b6758bc
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/index.jd
@@ -0,0 +1,31 @@
+page.title=Computation
+@jd:body
+
+<p>Renderscript provides a platform-independent computation engine that operates at the native level.
+  Use it to accelerate your apps that require extensive computational horsepower.</p>
+<div class="landing-docs">
+
+  <div>
+    <h3>Blog Articles</h3>
+      <a
+href="http://android-developers.blogspot.com/2012/01/levels-in-renderscript.html">
+        <h4>Levels in Renderscript</h4>
+      <p>For ICS, Renderscript (RS) has been updated with several new features to simplify
+        adding compute acceleration to your application. RS is interesting for compute
+        acceleration when you have large buffers of data on which you need to do significant
+        processing. In this example we will look at applying a levels/saturation operation
+        on a bitmap.</p>
+      </a>
+
+      <a
+href="http://android-developers.blogspot.com/2011/03/renderscript.html">
+        <h4>Renderscript Part 2</h4>
+        <p>In Introducing Renderscript I gave a brief overview of this technology.
+          In this post I’ll look at "compute" in more detail. In Renderscript we use
+          "compute" to mean offloading of data processing from Dalvik code to
+          Renderscript code which may run on the same or different processor(s).</p>
+      </a>
+  </div>
+
+  </div>
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/graphics/renderscript/reference.jd b/docs/html/guide/topics/renderscript/reference.jd
similarity index 91%
rename from docs/html/guide/topics/graphics/renderscript/reference.jd
rename to docs/html/guide/topics/renderscript/reference.jd
index a0a9df2..a9d780a 100644
--- a/docs/html/guide/topics/graphics/renderscript/reference.jd
+++ b/docs/html/guide/topics/renderscript/reference.jd
@@ -1,4 +1,7 @@
 page.title=Runtime API Reference
+parent.title=Computation
+parent.link=index.html
+
 @jd:body
 
 <script language="JavaScript">
diff --git a/docs/html/images/c2dm.png b/docs/html/images/c2dm.png
new file mode 100644
index 0000000..decdd1e
--- /dev/null
+++ b/docs/html/images/c2dm.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-api-access.png b/docs/html/images/gcm/gcm-api-access.png
new file mode 100644
index 0000000..5dfa434
--- /dev/null
+++ b/docs/html/images/gcm/gcm-api-access.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-api-key.png b/docs/html/images/gcm/gcm-api-key.png
new file mode 100644
index 0000000..92834bf
--- /dev/null
+++ b/docs/html/images/gcm/gcm-api-key.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-avd-first-msg.png b/docs/html/images/gcm/gcm-avd-first-msg.png
new file mode 100644
index 0000000..86296b5
--- /dev/null
+++ b/docs/html/images/gcm/gcm-avd-first-msg.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-avd-home-auto-reg.png b/docs/html/images/gcm/gcm-avd-home-auto-reg.png
new file mode 100644
index 0000000..986fc63
--- /dev/null
+++ b/docs/html/images/gcm/gcm-avd-home-auto-reg.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-config-server-key.png b/docs/html/images/gcm/gcm-config-server-key.png
new file mode 100644
index 0000000..90dd65d
--- /dev/null
+++ b/docs/html/images/gcm/gcm-config-server-key.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-create-api-proj.png b/docs/html/images/gcm/gcm-create-api-proj.png
new file mode 100644
index 0000000..6ef5cd2
--- /dev/null
+++ b/docs/html/images/gcm/gcm-create-api-proj.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-demo-homepage-appengine.png b/docs/html/images/gcm/gcm-demo-homepage-appengine.png
new file mode 100644
index 0000000..799d6d5
--- /dev/null
+++ b/docs/html/images/gcm/gcm-demo-homepage-appengine.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-demo-homepage.png b/docs/html/images/gcm/gcm-demo-homepage.png
new file mode 100644
index 0000000..5f97487
--- /dev/null
+++ b/docs/html/images/gcm/gcm-demo-homepage.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-device-reg.png b/docs/html/images/gcm/gcm-device-reg.png
new file mode 100644
index 0000000..643f120
--- /dev/null
+++ b/docs/html/images/gcm/gcm-device-reg.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-logo.png b/docs/html/images/gcm/gcm-logo.png
new file mode 100644
index 0000000..14b92ad
--- /dev/null
+++ b/docs/html/images/gcm/gcm-logo.png
Binary files differ
diff --git a/docs/html/images/gcm/gcm-sent-server.png b/docs/html/images/gcm/gcm-sent-server.png
new file mode 100644
index 0000000..6d19b0b
--- /dev/null
+++ b/docs/html/images/gcm/gcm-sent-server.png
Binary files differ
diff --git a/docs/html/images/gltracer/dialog-trace.png b/docs/html/images/gltracer/dialog-trace.png
new file mode 100644
index 0000000..8667623
--- /dev/null
+++ b/docs/html/images/gltracer/dialog-trace.png
Binary files differ
diff --git a/docs/html/images/gltracer/icon-capture.png b/docs/html/images/gltracer/icon-capture.png
new file mode 100644
index 0000000..9cbdb3b
--- /dev/null
+++ b/docs/html/images/gltracer/icon-capture.png
Binary files differ
diff --git a/docs/html/images/gltracer/icon-load-trace.png b/docs/html/images/gltracer/icon-load-trace.png
new file mode 100644
index 0000000..f3957b8
--- /dev/null
+++ b/docs/html/images/gltracer/icon-load-trace.png
Binary files differ
diff --git a/docs/html/images/google-apis.png b/docs/html/images/google-apis.png
new file mode 100644
index 0000000..2c5318b
--- /dev/null
+++ b/docs/html/images/google-apis.png
Binary files differ
diff --git a/docs/html/images/play_dev.png b/docs/html/images/play_dev.png
new file mode 100644
index 0000000..8d44f11
--- /dev/null
+++ b/docs/html/images/play_dev.png
Binary files differ
diff --git a/docs/html/reference/renderscript/annotated.html b/docs/html/reference/renderscript/annotated.html
index 0425db2..62badd9 100644
--- a/docs/html/reference/renderscript/annotated.html
+++ b/docs/html/reference/renderscript/annotated.html
@@ -36,6 +36,7 @@
   <tr><td class="indexkey"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a></td><td class="indexvalue">3x3 float matrix </td></tr>
   <tr><td class="indexkey"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a></td><td class="indexvalue">4x4 float matrix </td></tr>
   <tr><td class="indexkey"><a class="el" href="structrs__mesh.html">rs_mesh</a></td><td class="indexvalue">Opaque handle to a Renderscript mesh object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__path.html">rs_path</a></td><td class="indexvalue">Opaque handle to a Renderscript Path object </td></tr>
   <tr><td class="indexkey"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a></td><td class="indexvalue">Opaque handle to a Renderscript ProgramFragment object </td></tr>
   <tr><td class="indexkey"><a class="el" href="structrs__program__raster.html">rs_program_raster</a></td><td class="indexvalue">Opaque handle to a Renderscript ProgramRaster object </td></tr>
   <tr><td class="indexkey"><a class="el" href="structrs__program__store.html">rs_program_store</a></td><td class="indexvalue">Opaque handle to a Renderscript ProgramStore object </td></tr>
diff --git a/docs/html/reference/renderscript/globals.html b/docs/html/reference/renderscript/globals.html
index f6fa413..ffbd052 100644
--- a/docs/html/reference/renderscript/globals.html
+++ b/docs/html/reference/renderscript/globals.html
@@ -366,7 +366,7 @@
 : <a class="el" href="rs__math_8rsh.html#ad36abebbb36ffc5312fb2ed8baf98d39">rs_math.rsh</a>
 </li>
 <li>rsClearObject()
-: <a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rs_object.rsh</a>
+: <a class="el" href="rs__object_8rsh.html#aa246aa3c8162ef03e43bc0062671ae29">rs_object.rsh</a>
 </li>
 <li>rsDebug()
 : <a class="el" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rs_debug.rsh</a>
@@ -383,6 +383,9 @@
 <li>rsgAllocationSyncAll()
 : <a class="el" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rs_graphics.rsh</a>
 </li>
+<li>rsgBindConstant()
+: <a class="el" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rs_graphics.rsh</a>
+</li>
 <li>rsgBindFont()
 : <a class="el" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rs_graphics.rsh</a>
 </li>
@@ -411,7 +414,7 @@
 : <a class="el" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rs_graphics.rsh</a>
 </li>
 <li>rsgDrawMesh()
-: <a class="el" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rs_graphics.rsh</a>
+: <a class="el" href="rs__graphics_8rsh.html#ab2704a6d16e3d7983524d0a8413c1b8a">rs_graphics.rsh</a>
 </li>
 <li>rsgDrawQuad()
 : <a class="el" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rs_graphics.rsh</a>
@@ -468,7 +471,7 @@
 : <a class="el" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rs_graphics.rsh</a>
 </li>
 <li>rsIsObject()
-: <a class="el" href="rs__object_8rsh.html#ac1d6da920f12974b3633d25ed078da2d">rs_object.rsh</a>
+: <a class="el" href="rs__object_8rsh.html#afa57d9148778b03b270facbdbcb88816">rs_object.rsh</a>
 </li>
 <li>rsIsSphereInFrustum()
 : <a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rs_math.rsh</a>
@@ -477,7 +480,7 @@
 : <a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rs_time.rsh</a>
 </li>
 <li>rsMatrixGet()
-: <a class="el" href="rs__matrix_8rsh.html#af1fb87eb02f166bb85ef10a92333bb49">rs_matrix.rsh</a>
+: <a class="el" href="rs__matrix_8rsh.html#a90b0548da8dbe1f643bcbac8466e5b72">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixInverse()
 : <a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rs_matrix.rsh</a>
@@ -513,7 +516,7 @@
 : <a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixMultiply()
-: <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rs_matrix.rsh</a>
+: <a class="el" href="rs__matrix_8rsh.html#ae0b03aeec17ec8b9c5e75f8efb1bdc53">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixRotate()
 : <a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rs_matrix.rsh</a>
@@ -522,7 +525,7 @@
 : <a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixSet()
-: <a class="el" href="rs__matrix_8rsh.html#a68e320f7fa2cc5a5b4759e3ab679ee10">rs_matrix.rsh</a>
+: <a class="el" href="rs__matrix_8rsh.html#ada106cb8f08e4b23930d7ba1a0ce5609">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixTranslate()
 : <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rs_matrix.rsh</a>
@@ -555,7 +558,7 @@
 : <a class="el" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rs_quaternion.rsh</a>
 </li>
 <li>rsQuaternionMultiply()
-: <a class="el" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rs_quaternion.rsh</a>
+: <a class="el" href="rs__quaternion_8rsh.html#a8bbbb286a2e2cb71b416c053f44844c3">rs_quaternion.rsh</a>
 </li>
 <li>rsQuaternionNormalize()
 : <a class="el" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rs_quaternion.rsh</a>
@@ -567,7 +570,7 @@
 : <a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rs_quaternion.rsh</a>
 </li>
 <li>rsRand()
-: <a class="el" href="rs__math_8rsh.html#a03e898d810ac44158e7461b2b2b1c356">rs_math.rsh</a>
+: <a class="el" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rs_math.rsh</a>
 </li>
 <li>rsSendToClient()
 : <a class="el" href="rs__core_8rsh.html#a508003cadad2d37d41e2de7e9226f859">rs_core.rsh</a>
diff --git a/docs/html/reference/renderscript/globals_func.html b/docs/html/reference/renderscript/globals_func.html
index 5886454..c1a622d 100644
--- a/docs/html/reference/renderscript/globals_func.html
+++ b/docs/html/reference/renderscript/globals_func.html
@@ -299,7 +299,7 @@
 : <a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rs_object.rsh</a>
 </li>
 <li>rsDebug()
-: <a class="el" href="rs__debug_8rsh.html#a0a59285be7204bde7b199c77578b6a42">rs_debug.rsh</a>
+: <a class="el" href="rs__debug_8rsh.html#a6bb20c16c9fcc613158ca8c6f0dd81bd">rs_debug.rsh</a>
 </li>
 <li>rsExtractFrustumPlanes()
 : <a class="el" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rs_math.rsh</a>
@@ -313,6 +313,9 @@
 <li>rsgAllocationSyncAll()
 : <a class="el" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rs_graphics.rsh</a>
 </li>
+<li>rsgBindConstant()
+: <a class="el" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rs_graphics.rsh</a>
+</li>
 <li>rsgBindFont()
 : <a class="el" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rs_graphics.rsh</a>
 </li>
@@ -398,7 +401,7 @@
 : <a class="el" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rs_graphics.rsh</a>
 </li>
 <li>rsIsObject()
-: <a class="el" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rs_object.rsh</a>
+: <a class="el" href="rs__object_8rsh.html#ac1d6da920f12974b3633d25ed078da2d">rs_object.rsh</a>
 </li>
 <li>rsIsSphereInFrustum()
 : <a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rs_math.rsh</a>
@@ -407,7 +410,7 @@
 : <a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rs_time.rsh</a>
 </li>
 <li>rsMatrixGet()
-: <a class="el" href="rs__matrix_8rsh.html#a90b0548da8dbe1f643bcbac8466e5b72">rs_matrix.rsh</a>
+: <a class="el" href="rs__matrix_8rsh.html#af1fb87eb02f166bb85ef10a92333bb49">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixInverse()
 : <a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rs_matrix.rsh</a>
@@ -443,7 +446,7 @@
 : <a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixMultiply()
-: <a class="el" href="rs__matrix_8rsh.html#a716bc2d29b80eb25388aba3ba8845aef">rs_matrix.rsh</a>
+: <a class="el" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixRotate()
 : <a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rs_matrix.rsh</a>
@@ -458,10 +461,10 @@
 : <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rs_matrix.rsh</a>
 </li>
 <li>rsMatrixTranspose()
-: <a class="el" href="rs__matrix_8rsh.html#a49164dd4d4e85b212196028b1fd89dc1">rs_matrix.rsh</a>
+: <a class="el" href="rs__matrix_8rsh.html#ac52acb31a705f6c68af8bddea0e79969">rs_matrix.rsh</a>
 </li>
 <li>rsPackColorTo8888()
-: <a class="el" href="rs__math_8rsh.html#a22e0be7e18b317a7453ebad4300934f6">rs_math.rsh</a>
+: <a class="el" href="rs__math_8rsh.html#a628c8d13e3fe41fc860ad937184e4dcd">rs_math.rsh</a>
 </li>
 <li>rsqrt()
 : <a class="el" href="rs__cl_8rsh.html#a5db00fde9e6bff693a38f3a37e7a1f70">rs_cl.rsh</a>
@@ -497,16 +500,16 @@
 : <a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rs_quaternion.rsh</a>
 </li>
 <li>rsRand()
-: <a class="el" href="rs__math_8rsh.html#a84b2e7468314873b3aa02969e310d9e4">rs_math.rsh</a>
+: <a class="el" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rs_math.rsh</a>
 </li>
 <li>rsSendToClient()
-: <a class="el" href="rs__core_8rsh.html#a508003cadad2d37d41e2de7e9226f859">rs_core.rsh</a>
+: <a class="el" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rs_core.rsh</a>
 </li>
 <li>rsSendToClientBlocking()
-: <a class="el" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rs_core.rsh</a>
+: <a class="el" href="rs__core_8rsh.html#afc93b00be08f58512a6ab6a87feb9515">rs_core.rsh</a>
 </li>
 <li>rsSetObject()
-: <a class="el" href="rs__object_8rsh.html#a8135bceeb7b3ec8bf9a49d04e39bd565">rs_object.rsh</a>
+: <a class="el" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rs_object.rsh</a>
 </li>
 <li>rsTime()
 : <a class="el" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rs_time.rsh</a>
diff --git a/docs/html/reference/renderscript/index.html b/docs/html/reference/renderscript/index.html
index c4c057e..212f000 100644
--- a/docs/html/reference/renderscript/index.html
+++ b/docs/html/reference/renderscript/index.html
@@ -24,9 +24,9 @@
   </div>
 </div>
 <div class="contents">
-<div class="textblock"><p>Renderscript is a high-performance runtime that provides graphics rendering and compute operations at the native level. Renderscript code is compiled on devices at runtime to allow platform-independence as well. This reference documentation describes the Renderscript runtime APIs, which you can utilize to write Renderscript code in C99. The Renderscript header files are automatically included for you, except for the <a class="el" href="rs__graphics_8rsh.html" title="Renderscript graphics API.">rs_graphics.rsh</a> header. If you are doing graphics rendering, include the graphics header file like this:</p>
-<p><code>#include "rs_graphics.rsh"</code></p>
-<p>To use Renderscript, you need to utilize the Renderscript runtime APIs documented here as well as the Android framework APIs for Renderscript. For documentation on the Android framework APIs, see the <a target="_parent" href="http://developer.android.com/reference/android/renderscript/package-summary.html">android.renderscript</a> package reference. For more information on how to develop with Renderscript and how the runtime and Android framework APIs interact, see the <a target="_parent" href="http://developer.android.com/guide/topics/renderscript/index.html">Renderscript developer guide</a> and the <a target="_parent" href="http://developer.android.com/resources/samples/RenderScript/index.html">Renderscript samples</a>. </p>
+<div class="textblock"><p>Renderscript is a high-performance runtime that provides graphics rendering and compute operations at the native level. Renderscript code is compiled on devices at runtime to allow platform-independence as well. This reference documentation describes the Renderscript runtime APIs, which you can utilize to write Renderscript code in C99. The Renderscript header files are automatically included for you.</p>
+<p>To use Renderscript, you need to utilize the Renderscript runtime APIs documented here as well as the Android framework APIs for Renderscript. For documentation on the Android framework APIs, see the <a href="http://developer.android.com/reference/android/renderscript/package-summary.html" target="_parent">android.renderscript</a> package reference.</p>
+<p>For more information on how to develop with Renderscript and how the runtime and Android framework APIs interact, see the <a href="http://developer.android.com/guide/topics/renderscript/index.html" target="_parent">Renderscript developer guide</a> and the Renderscript SDK samples. </p>
 </div></div>
 
 </body>
diff --git a/docs/html/reference/renderscript/rs__allocation_8rsh.html b/docs/html/reference/renderscript/rs__allocation_8rsh.html
index ca2663b..9dd06d3 100644
--- a/docs/html/reference/renderscript/rs__allocation_8rsh.html
+++ b/docs/html/reference/renderscript/rs__allocation_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh File Reference</title>
+<title>rs_allocation.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,7 +27,7 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh File Reference</div>  </div>
+<div class="title">rs_allocation.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
diff --git a/docs/html/reference/renderscript/rs__allocation_8rsh_source.html b/docs/html/reference/renderscript/rs__allocation_8rsh_source.html
index 0d1c167..3358cff 100644
--- a/docs/html/reference/renderscript/rs__allocation_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__allocation_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh Source File</title>
+<title>rs_allocation.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh</div>  </div>
+<div class="title">rs_allocation.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__allocation_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
@@ -93,8 +93,34 @@
 <a name="l00143"></a>00143 extern const <span class="keywordtype">void</span> * __attribute__((overloadable))
 <a name="l00144"></a>00144     <a class="code" href="rs__allocation_8rsh.html#a3fd30b4388748601e025bb3566ce0cbc">rsGetElementAt</a>(rs_allocation, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> z);
 <a name="l00145"></a>00145 
-<a name="l00146"></a>00146 <span class="preprocessor">#endif</span>
-<a name="l00147"></a>00147 <span class="preprocessor"></span>
+<a name="l00146"></a>00146 <span class="comment">// New API&#39;s</span>
+<a name="l00147"></a>00147 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00148"></a>00148 <span class="preprocessor"></span>
+<a name="l00153"></a>00153 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00154"></a>00154     rsAllocationIoSend(rs_allocation a);
+<a name="l00155"></a>00155 
+<a name="l00160"></a>00160 extern const <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00161"></a>00161     rsAllocationIoReceive(rs_allocation a);
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163 
+<a name="l00169"></a>00169 extern <a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> __attribute__((overloadable))
+<a name="l00170"></a>00170     rsAllocationGetElement(rs_allocation a);
+<a name="l00171"></a>00171 
+<a name="l00178"></a>00178 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00179"></a>00179     rsSample(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s, <span class="keywordtype">float</span> location);
+<a name="l00189"></a>00189 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00190"></a>00190     rsSample(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s, <span class="keywordtype">float</span> location, <span class="keywordtype">float</span> lod);
+<a name="l00191"></a>00191 
+<a name="l00198"></a>00198 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00199"></a>00199     rsSample(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> location);
+<a name="l00200"></a>00200 
+<a name="l00210"></a>00210 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00211"></a>00211     rsSample(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> location, <span class="keywordtype">float</span> lod);
+<a name="l00212"></a>00212 
+<a name="l00213"></a>00213 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00214"></a>00214 <span class="preprocessor"></span>
+<a name="l00215"></a>00215 <span class="preprocessor">#endif</span>
+<a name="l00216"></a>00216 <span class="preprocessor"></span>
 </pre></div></div>
 </div>
 
diff --git a/docs/html/reference/renderscript/rs__atomic_8rsh.html b/docs/html/reference/renderscript/rs__atomic_8rsh.html
index 3d0e97e..bb33fc30 100644
--- a/docs/html/reference/renderscript/rs__atomic_8rsh.html
+++ b/docs/html/reference/renderscript/rs__atomic_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh File Reference</title>
+<title>rs_atomic.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -25,7 +25,7 @@
 </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh File Reference</div>  </div>
+<div class="title">rs_atomic.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
diff --git a/docs/html/reference/renderscript/rs__atomic_8rsh_source.html b/docs/html/reference/renderscript/rs__atomic_8rsh_source.html
index a1400bd..63d1a680 100644
--- a/docs/html/reference/renderscript/rs__atomic_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__atomic_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh Source File</title>
+<title>rs_atomic.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh</div>  </div>
+<div class="title">rs_atomic.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__atomic_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
@@ -97,7 +97,7 @@
 <a name="l00231"></a>00231     rsAtomicCas(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> compareValue, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> newValue);
 <a name="l00232"></a>00232 
 <a name="l00244"></a>00244 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00245"></a>00245     rsAtomicCas(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> compareValue, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> newValue);
+<a name="l00245"></a>00245     rsAtomicCas(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> compareValue, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> newValue);
 <a name="l00246"></a>00246 
 <a name="l00247"></a>00247 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
 <a name="l00248"></a>00248 <span class="preprocessor"></span>
diff --git a/docs/html/reference/renderscript/rs__cl_8rsh.html b/docs/html/reference/renderscript/rs__cl_8rsh.html
index 5c499e6..999fe0d 100644
--- a/docs/html/reference/renderscript/rs__cl_8rsh.html
+++ b/docs/html/reference/renderscript/rs__cl_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh File Reference</title>
+<title>rs_cl.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,7 +27,7 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh File Reference</div>  </div>
+<div class="title">rs_cl.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
diff --git a/docs/html/reference/renderscript/rs__cl_8rsh_source.html b/docs/html/reference/renderscript/rs__cl_8rsh_source.html
index 73ecdc6..8cc3cb7 100644
--- a/docs/html/reference/renderscript/rs__cl_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__cl_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh Source File</title>
+<title>rs_cl.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh</div>  </div>
+<div class="title">rs_cl.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__cl_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
@@ -275,7 +275,7 @@
 <a name="l00501"></a>00501 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> *iret);
 <a name="l00502"></a>00502 FN_FUNC_FN_PFN(<a class="code" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a>);
 <a name="l00503"></a>00503 
-<a name="l00504"></a>00504 <span class="comment">//extern float __attribute__((overloadable)) nan(uint);</span>
+<a name="l00504"></a>00504 extern <span class="keywordtype">float</span> __attribute__((overloadable)) nan(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>);
 <a name="l00505"></a>00505 
 <a name="l00511"></a>00511 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
 <a name="l00512"></a>00512 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a>)
diff --git a/docs/html/reference/renderscript/rs__core_8rsh.html b/docs/html/reference/renderscript/rs__core_8rsh.html
index 5a32e19..6212598 100644
--- a/docs/html/reference/renderscript/rs__core_8rsh.html
+++ b/docs/html/reference/renderscript/rs__core_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh File Reference</title>
+<title>rs_core.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -30,7 +30,7 @@
 <a href="#enum-members">Enumerations</a> &#124;
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh File Reference</div>  </div>
+<div class="title">rs_core.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <div class="textblock"><code>#include &quot;<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>&quot;</code><br/>
@@ -38,10 +38,12 @@
 <code>#include &quot;<a class="el" href="rs__atomic_8rsh_source.html">rs_atomic.rsh</a>&quot;</code><br/>
 <code>#include &quot;<a class="el" href="rs__cl_8rsh_source.html">rs_cl.rsh</a>&quot;</code><br/>
 <code>#include &quot;<a class="el" href="rs__debug_8rsh_source.html">rs_debug.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__element_8rsh_source.html">rs_element.rsh</a>&quot;</code><br/>
 <code>#include &quot;<a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>&quot;</code><br/>
 <code>#include &quot;<a class="el" href="rs__matrix_8rsh_source.html">rs_matrix.rsh</a>&quot;</code><br/>
 <code>#include &quot;<a class="el" href="rs__object_8rsh_source.html">rs_object.rsh</a>&quot;</code><br/>
 <code>#include &quot;<a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__sampler_8rsh_source.html">rs_sampler.rsh</a>&quot;</code><br/>
 <code>#include &quot;<a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>&quot;</code><br/>
 </div><table class="memberdecls">
 <tr><td colspan="2"><h2><a name="nested-classes"></a>
@@ -63,8 +65,7 @@
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#ae62dc9d507e0e62c064217c71cc94101">rsForEach</a> (<a class="el" href="structrs__script.html">rs_script</a> script, <a class="el" href="structrs__allocation.html">rs_allocation</a> input, <a class="el" href="structrs__allocation.html">rs_allocation</a> output, const void *usrData)</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>todo-jsams </p>
-
+<div class="textblock">
 <p>Definition in file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
 </div><hr/><h2>Typedef Documentation</h2>
 <a class="anchor" id="ae8756b32e23445f287960b9d0ffb449c"></a><!-- doxytag: member="rs_core.rsh::rs_script_call_t" ref="ae8756b32e23445f287960b9d0ffb449c" args="" -->
@@ -95,7 +96,7 @@
 <p>Launch order hint for rsForEach calls. This provides a hint to the system to determine in which order the root function of the target is called with each cell of the allocation.</p>
 <p>This is a hint and implementations may not obey the order. </p>
 
-<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00074">74</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00092">92</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
 
 </div>
 </div>
diff --git a/docs/html/reference/renderscript/rs__core_8rsh_source.html b/docs/html/reference/renderscript/rs__core_8rsh_source.html
index fac83e0..888a8b4 100644
--- a/docs/html/reference/renderscript/rs__core_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__core_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh Source File</title>
+<title>rs_core.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,11 +24,11 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh</div>  </div>
+<div class="title">rs_core.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__core_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011-2012 The Android Open Source Project</span>
 <a name="l00003"></a>00003 <span class="comment"> *</span>
 <a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
 <a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
@@ -43,81 +43,81 @@
 <a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
 <a name="l00015"></a>00015 <span class="comment"> */</span>
 <a name="l00016"></a>00016 
-<a name="l00024"></a>00024 <span class="preprocessor">#ifndef __RS_CORE_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __RS_CORE_RSH__</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#define _RS_RUNTIME extern</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &quot;<a class="code" href="rs__types_8rsh.html">rs_types.rsh</a>&quot;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &quot;<a class="code" href="rs__allocation_8rsh.html" title="Allocation routines.">rs_allocation.rsh</a>&quot;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &quot;<a class="code" href="rs__atomic_8rsh.html" title="Atomic routines.">rs_atomic.rsh</a>&quot;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &quot;<a class="code" href="rs__cl_8rsh.html" title="Basic math functions.">rs_cl.rsh</a>&quot;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &quot;<a class="code" href="rs__debug_8rsh.html" title="Utility debugging routines.">rs_debug.rsh</a>&quot;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &quot;<a class="code" href="rs__math_8rsh.html">rs_math.rsh</a>&quot;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &quot;<a class="code" href="rs__matrix_8rsh.html" title="Matrix routines.">rs_matrix.rsh</a>&quot;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &quot;<a class="code" href="rs__object_8rsh.html" title="Object routines.">rs_object.rsh</a>&quot;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &quot;<a class="code" href="rs__quaternion_8rsh.html" title="Quaternion routines.">rs_quaternion.rsh</a>&quot;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &quot;<a class="code" href="rs__time_8rsh.html" title="Renderscript time routines.">rs_time.rsh</a>&quot;</span>
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041 
-<a name="l00047"></a>00047 <span class="keyword">extern</span> <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00048"></a>00048     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID);
-<a name="l00052"></a>00052 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00053"></a>00053     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
-<a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00059"></a>00059     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID);
-<a name="l00063"></a>00063 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00064"></a>00064     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066 
-<a name="l00074"></a><a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">00074</a> enum <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> {
-<a name="l00075"></a>00075     RS_FOR_EACH_STRATEGY_SERIAL,
-<a name="l00076"></a>00076     RS_FOR_EACH_STRATEGY_DONT_CARE,
-<a name="l00077"></a>00077     RS_FOR_EACH_STRATEGY_DST_LINEAR,
-<a name="l00078"></a>00078     RS_FOR_EACH_STRATEGY_TILE_SMALL,
-<a name="l00079"></a>00079     RS_FOR_EACH_STRATEGY_TILE_MEDIUM,
-<a name="l00080"></a>00080     RS_FOR_EACH_STRATEGY_TILE_LARGE
-<a name="l00081"></a>00081 };
-<a name="l00082"></a>00082 
+<a name="l00042"></a>00042 <span class="preprocessor">#ifndef __RS_CORE_RSH__</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define __RS_CORE_RSH__</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span>
+<a name="l00045"></a>00045 <span class="preprocessor">#define _RS_RUNTIME extern</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include &quot;<a class="code" href="rs__types_8rsh.html">rs_types.rsh</a>&quot;</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include &quot;<a class="code" href="rs__allocation_8rsh.html" title="Allocation routines.">rs_allocation.rsh</a>&quot;</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include &quot;<a class="code" href="rs__atomic_8rsh.html" title="Atomic routines.">rs_atomic.rsh</a>&quot;</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include &quot;<a class="code" href="rs__cl_8rsh.html" title="Basic math functions.">rs_cl.rsh</a>&quot;</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include &quot;<a class="code" href="rs__debug_8rsh.html" title="Utility debugging routines.">rs_debug.rsh</a>&quot;</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include &quot;<a class="code" href="rs__element_8rsh.html" title="Element routines.">rs_element.rsh</a>&quot;</span>
+<a name="l00053"></a>00053 <span class="preprocessor">#include &quot;<a class="code" href="rs__math_8rsh.html">rs_math.rsh</a>&quot;</span>
+<a name="l00054"></a>00054 <span class="preprocessor">#include &quot;<a class="code" href="rs__matrix_8rsh.html" title="Matrix routines.">rs_matrix.rsh</a>&quot;</span>
+<a name="l00055"></a>00055 <span class="preprocessor">#include &quot;<a class="code" href="rs__object_8rsh.html" title="Object routines.">rs_object.rsh</a>&quot;</span>
+<a name="l00056"></a>00056 <span class="preprocessor">#include &quot;<a class="code" href="rs__quaternion_8rsh.html" title="Quaternion routines.">rs_quaternion.rsh</a>&quot;</span>
+<a name="l00057"></a>00057 <span class="preprocessor">#include &quot;<a class="code" href="rs__sampler_8rsh.html" title="Sampler routines.">rs_sampler.rsh</a>&quot;</span>
+<a name="l00058"></a>00058 <span class="preprocessor">#include &quot;<a class="code" href="rs__time_8rsh.html" title="Renderscript time routines.">rs_time.rsh</a>&quot;</span>
+<a name="l00059"></a>00059 
+<a name="l00065"></a>00065 <span class="keyword">extern</span> <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00066"></a>00066     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID);
+<a name="l00070"></a>00070 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00071"></a>00071     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
+<a name="l00076"></a>00076 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00077"></a>00077     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID);
+<a name="l00081"></a>00081 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00082"></a>00082     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
 <a name="l00083"></a>00083 
-<a name="l00088"></a><a class="code" href="structrs__script__call.html">00088</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structrs__script__call.html">rs_script_call</a> {
-<a name="l00089"></a>00089     <span class="keyword">enum</span> <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> strategy;
-<a name="l00090"></a>00090     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xStart;
-<a name="l00091"></a>00091     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xEnd;
-<a name="l00092"></a>00092     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yStart;
-<a name="l00093"></a>00093     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yEnd;
-<a name="l00094"></a>00094     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zStart;
-<a name="l00095"></a>00095     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zEnd;
-<a name="l00096"></a>00096     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayStart;
-<a name="l00097"></a>00097     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayEnd;
-<a name="l00098"></a>00098 } <a class="code" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a>;
-<a name="l00099"></a>00099 
-<a name="l00116"></a>00116 <span class="preprocessor">#if !defined(RS_VERSION) || (RS_VERSION &lt; 14)</span>
-<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00118"></a>00118     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input,
-<a name="l00119"></a>00119               <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData,
-<a name="l00120"></a>00120               const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *sc);
-<a name="l00124"></a>00124 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00125"></a>00125     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input,
-<a name="l00126"></a>00126               <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData);
-<a name="l00127"></a>00127 <span class="preprocessor">#else</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span>
-<a name="l00147"></a>00147 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00148"></a>00148     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output,
-<a name="l00149"></a>00149               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen, const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *);
-<a name="l00153"></a>00153 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00154"></a>00154     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output,
-<a name="l00155"></a>00155               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen);
-<a name="l00159"></a>00159 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00160"></a>00160     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output);
-<a name="l00161"></a>00161 <span class="preprocessor">#endif</span>
-<a name="l00162"></a>00162 <span class="preprocessor"></span>
-<a name="l00163"></a>00163 
-<a name="l00164"></a>00164 
-<a name="l00165"></a>00165 <span class="preprocessor">#undef _RS_RUNTIME</span>
-<a name="l00166"></a>00166 <span class="preprocessor"></span>
-<a name="l00167"></a>00167 <span class="preprocessor">#endif</span>
+<a name="l00084"></a>00084 
+<a name="l00092"></a><a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">00092</a> enum <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> {
+<a name="l00093"></a>00093     RS_FOR_EACH_STRATEGY_SERIAL,
+<a name="l00094"></a>00094     RS_FOR_EACH_STRATEGY_DONT_CARE,
+<a name="l00095"></a>00095     RS_FOR_EACH_STRATEGY_DST_LINEAR,
+<a name="l00096"></a>00096     RS_FOR_EACH_STRATEGY_TILE_SMALL,
+<a name="l00097"></a>00097     RS_FOR_EACH_STRATEGY_TILE_MEDIUM,
+<a name="l00098"></a>00098     RS_FOR_EACH_STRATEGY_TILE_LARGE
+<a name="l00099"></a>00099 };
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101 
+<a name="l00106"></a><a class="code" href="structrs__script__call.html">00106</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structrs__script__call.html">rs_script_call</a> {
+<a name="l00107"></a>00107     <span class="keyword">enum</span> <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> strategy;
+<a name="l00108"></a>00108     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xStart;
+<a name="l00109"></a>00109     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xEnd;
+<a name="l00110"></a>00110     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yStart;
+<a name="l00111"></a>00111     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yEnd;
+<a name="l00112"></a>00112     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zStart;
+<a name="l00113"></a>00113     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zEnd;
+<a name="l00114"></a>00114     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayStart;
+<a name="l00115"></a>00115     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayEnd;
+<a name="l00116"></a>00116 } <a class="code" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a>;
+<a name="l00117"></a>00117 
+<a name="l00134"></a>00134 <span class="preprocessor">#if !defined(RS_VERSION) || (RS_VERSION &lt; 14)</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00136"></a>00136     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input,
+<a name="l00137"></a>00137               <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData,
+<a name="l00138"></a>00138               const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *sc);
+<a name="l00142"></a>00142 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00143"></a>00143     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input,
+<a name="l00144"></a>00144               <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData);
+<a name="l00145"></a>00145 <span class="preprocessor">#else</span>
+<a name="l00146"></a>00146 <span class="preprocessor"></span>
+<a name="l00165"></a>00165 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00166"></a>00166     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output,
+<a name="l00167"></a>00167               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen, const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *);
+<a name="l00171"></a>00171 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00172"></a>00172     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output,
+<a name="l00173"></a>00173               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen);
+<a name="l00177"></a>00177 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00178"></a>00178     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output);
+<a name="l00179"></a>00179 <span class="preprocessor">#endif</span>
+<a name="l00180"></a>00180 <span class="preprocessor"></span>
+<a name="l00181"></a>00181 
+<a name="l00182"></a>00182 
+<a name="l00183"></a>00183 <span class="preprocessor">#undef _RS_RUNTIME</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span>
+<a name="l00185"></a>00185 <span class="preprocessor">#endif</span>
 </pre></div></div>
 </div>
 
diff --git a/docs/html/reference/renderscript/rs__debug_8rsh.html b/docs/html/reference/renderscript/rs__debug_8rsh.html
index 75ce9db..7259cf2 100644
--- a/docs/html/reference/renderscript/rs__debug_8rsh.html
+++ b/docs/html/reference/renderscript/rs__debug_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh File Reference</title>
+<title>rs_debug.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,7 +27,7 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh File Reference</div>  </div>
+<div class="title">rs_debug.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
diff --git a/docs/html/reference/renderscript/rs__debug_8rsh_source.html b/docs/html/reference/renderscript/rs__debug_8rsh_source.html
index b06e99c..b1589aa 100644
--- a/docs/html/reference/renderscript/rs__debug_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__debug_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh Source File</title>
+<title>rs_debug.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh</div>  </div>
+<div class="title">rs_debug.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__debug_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
diff --git a/docs/html/reference/renderscript/rs__element_8rsh.html b/docs/html/reference/renderscript/rs__element_8rsh.html
new file mode 100644
index 0000000..5f23ae9
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__element_8rsh.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_element.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_element.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Element routines. </p>
+
+<p>Definition in file <a class="el" href="rs__element_8rsh_source.html">rs_element.rsh</a>.</p>
+</div></div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__element_8rsh_source.html b/docs/html/reference/renderscript/rs__element_8rsh_source.html
new file mode 100644
index 0000000..47ebb4d0
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__element_8rsh_source.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_element.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_element.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__element_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_ELEMENT_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_ELEMENT_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="comment">// New API&#39;s</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00038"></a>00038 <span class="keyword">extern</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00039"></a>00039     rsElementGetSubElementCount(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> e);
+<a name="l00040"></a>00040 
+<a name="l00049"></a>00049 extern <a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> __attribute__((overloadable))
+<a name="l00050"></a>00050     rsElementGetSubElement(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a>, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
+<a name="l00051"></a>00051 
+<a name="l00061"></a>00061 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00062"></a>00062     rsElementGetSubElementNameLength(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
+<a name="l00063"></a>00063 
+<a name="l00075"></a>00075 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00076"></a>00076     rsElementGetSubElementName(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index, <span class="keywordtype">char</span> *name, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> nameLength);
+<a name="l00077"></a>00077 
+<a name="l00088"></a>00088 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00089"></a>00089     rsElementGetSubElementArraySize(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
+<a name="l00090"></a>00090 
+<a name="l00100"></a>00100 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00101"></a>00101     rsElementGetSubElementOffsetBytes(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
+<a name="l00102"></a>00102 
+<a name="l00109"></a>00109 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00110"></a>00110     rsElementGetBytesSize(rs_element e);
+<a name="l00111"></a>00111 
+<a name="l00118"></a>00118 extern rs_data_type __attribute__((overloadable))
+<a name="l00119"></a>00119     rsElementGetDataType(rs_element e);
+<a name="l00120"></a>00120 
+<a name="l00127"></a>00127 extern rs_data_kind __attribute__((overloadable))
+<a name="l00128"></a>00128     rsElementGetDataKind(rs_element e);
+<a name="l00129"></a>00129 
+<a name="l00137"></a>00137 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00138"></a>00138     rsElementGetVectorSize(rs_element e);
+<a name="l00139"></a>00139 
+<a name="l00140"></a>00140 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span>
+<a name="l00142"></a>00142 <span class="preprocessor">#endif // __RS_ELEMENT_RSH__</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__graphics_8rsh.html b/docs/html/reference/renderscript/rs__graphics_8rsh.html
index 8a17b30..de62965 100644
--- a/docs/html/reference/renderscript/rs__graphics_8rsh.html
+++ b/docs/html/reference/renderscript/rs__graphics_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh File Reference</title>
+<title>rs_graphics.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,10 +27,12 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh File Reference</div>  </div>
+<div class="title">rs_graphics.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
-<table class="memberdecls">
+<div class="textblock"><code>#include &quot;<a class="el" href="rs__mesh_8rsh_source.html">rs_mesh.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__program_8rsh_source.html">rs_program.rsh</a>&quot;</code><br/>
+</div><table class="memberdecls">
 <tr><td colspan="2"><h2><a name="func-members"></a>
 Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rsgBindProgramFragment</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> pf)</td></tr>
@@ -44,6 +46,8 @@
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rsgProgramVertexLoadTextureMatrix</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *tex)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rsgProgramVertexGetProjectionMatrix</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *proj)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rsgProgramFragmentConstantColor</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> pf, float r, float g, float b, float a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rsgBindConstant</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> ps, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__allocation.html">rs_allocation</a> c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a516131032d384bae5be9afa19a257033">rsgBindConstant</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> pv, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__allocation.html">rs_allocation</a> c)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rsgGetWidth</a> (void)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rsgGetHeight</a> (void)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> alloc)</td></tr>
@@ -95,6 +99,90 @@
 
 </div>
 </div>
+<a class="anchor" id="a46208900d16287fde91a5d14ebc830dc"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindConstant" ref="a46208900d16287fde91a5d14ebc830dc" args="(rs_program_fragment ps, uint slot, rs_allocation c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindConstant </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
+          <td class="paramname"><em>ps</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>slot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>c</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new Allocation object to a ProgramFragment. The Allocation must be a valid constant input for the Program.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ps</td><td>program object </td></tr>
+    <tr><td class="paramname">slot</td><td>index of the constant buffer on the program </td></tr>
+    <tr><td class="paramname">c</td><td>constants to bind </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a516131032d384bae5be9afa19a257033"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindConstant" ref="a516131032d384bae5be9afa19a257033" args="(rs_program_vertex pv, uint slot, rs_allocation c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindConstant </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
+          <td class="paramname"><em>pv</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>slot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>c</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new Allocation object to a ProgramVertex. The Allocation must be a valid constant input for the Program.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pv</td><td>program object </td></tr>
+    <tr><td class="paramname">slot</td><td>index of the constant buffer on the program </td></tr>
+    <tr><td class="paramname">c</td><td>constants to bind </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
 <a class="anchor" id="ae89effef281e92e2940055883ea366d4"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindFont" ref="ae89effef281e92e2940055883ea366d4" args="(rs_font font)" -->
 <div class="memitem">
 <div class="memproto">
@@ -1185,7 +1273,7 @@
 <div class="memdoc">
 <p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
 
-<p>Definition at line <a class="el" href="rs__graphics_8rsh_source.html#l00380">380</a> of file <a class="el" href="rs__graphics_8rsh_source.html">rs_graphics.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__graphics_8rsh_source.html#l00409">409</a> of file <a class="el" href="rs__graphics_8rsh_source.html">rs_graphics.rsh</a>.</p>
 
 </div>
 </div>
diff --git a/docs/html/reference/renderscript/rs__graphics_8rsh_source.html b/docs/html/reference/renderscript/rs__graphics_8rsh_source.html
index b9ce0b7..9f673bd 100644
--- a/docs/html/reference/renderscript/rs__graphics_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__graphics_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh Source File</title>
+<title>rs_graphics.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,11 +24,11 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh</div>  </div>
+<div class="title">rs_graphics.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__graphics_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011-2012 The Android Open Source Project</span>
 <a name="l00003"></a>00003 <span class="comment"> *</span>
 <a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
 <a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
@@ -45,137 +45,150 @@
 <a name="l00016"></a>00016 
 <a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_GRAPHICS_RSH__</span>
 <a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_GRAPHICS_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span>
-<a name="l00031"></a>00031 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00032"></a>00032     rsgBindColorTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> colorTarget, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
-<a name="l00033"></a>00033 
-<a name="l00038"></a>00038 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00039"></a>00039     rsgClearColorTarget(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
-<a name="l00040"></a>00040 
-<a name="l00045"></a>00045 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00046"></a>00046     rsgBindDepthTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> depthTarget);
-<a name="l00047"></a>00047 
-<a name="l00051"></a>00051 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00052"></a>00052     rsgClearDepthTarget(<span class="keywordtype">void</span>);
-<a name="l00053"></a>00053 
-<a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00059"></a>00059     rsgClearAllRenderTargets(<span class="keywordtype">void</span>);
-<a name="l00060"></a>00060 
-<a name="l00064"></a>00064 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
-<a name="l00065"></a>00065     rsgFinish(<span class="keywordtype">void</span>);
-<a name="l00066"></a>00066 
-<a name="l00067"></a>00067 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span>
-<a name="l00074"></a>00074 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00075"></a>00075     <a class="code" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rsgBindProgramFragment</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> pf);
-<a name="l00076"></a>00076 
-<a name="l00082"></a>00082 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00083"></a>00083     <a class="code" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rsgBindProgramStore</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00084"></a>00084 
-<a name="l00090"></a>00090 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00091"></a>00091     <a class="code" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rsgBindProgramVertex</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> pv);
-<a name="l00092"></a>00092 
-<a name="l00098"></a>00098 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00099"></a>00099     <a class="code" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rsgBindProgramRaster</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> pr);
-<a name="l00100"></a>00100 
-<a name="l00107"></a>00107 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00108"></a>00108     <a class="code" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rsgBindSampler</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>);
-<a name="l00109"></a>00109 
-<a name="l00118"></a>00118 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00119"></a>00119     <a class="code" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rsgBindTexture</a>(rs_program_fragment, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
-<a name="l00120"></a>00120 
-<a name="l00127"></a>00127 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00128"></a>00128     <a class="code" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rsgProgramVertexLoadProjectionMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
-<a name="l00135"></a>00135 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00136"></a>00136     <a class="code" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rsgProgramVertexLoadModelMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *model);
-<a name="l00143"></a>00143 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00144"></a>00144     <a class="code" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rsgProgramVertexLoadTextureMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *tex);
-<a name="l00151"></a>00151 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00152"></a>00152     <a class="code" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rsgProgramVertexGetProjectionMatrix</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
-<a name="l00153"></a>00153 
-<a name="l00163"></a>00163 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00164"></a>00164     <a class="code" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rsgProgramFragmentConstantColor</a>(rs_program_fragment pf, <span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
-<a name="l00165"></a>00165 
-<a name="l00171"></a>00171 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
-<a name="l00172"></a>00172     <a class="code" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rsgGetWidth</a>(<span class="keywordtype">void</span>);
-<a name="l00173"></a>00173 
-<a name="l00179"></a>00179 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
-<a name="l00180"></a>00180     <a class="code" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rsgGetHeight</a>(<span class="keywordtype">void</span>);
-<a name="l00181"></a>00181 
-<a name="l00182"></a>00182 
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;<a class="code" href="rs__mesh_8rsh.html" title="Mesh routines.">rs_mesh.rsh</a>&quot;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;<a class="code" href="rs__program_8rsh.html" title="Program object routines.">rs_program.rsh</a>&quot;</span>
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00036"></a>00036     rsgBindColorTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> colorTarget, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
+<a name="l00037"></a>00037 
+<a name="l00042"></a>00042 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00043"></a>00043     rsgClearColorTarget(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
+<a name="l00044"></a>00044 
+<a name="l00049"></a>00049 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00050"></a>00050     rsgBindDepthTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> depthTarget);
+<a name="l00051"></a>00051 
+<a name="l00055"></a>00055 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00056"></a>00056     rsgClearDepthTarget(<span class="keywordtype">void</span>);
+<a name="l00057"></a>00057 
+<a name="l00062"></a>00062 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00063"></a>00063     rsgClearAllRenderTargets(<span class="keywordtype">void</span>);
+<a name="l00064"></a>00064 
+<a name="l00068"></a>00068 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
+<a name="l00069"></a>00069     rsgFinish(<span class="keywordtype">void</span>);
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span>
+<a name="l00078"></a>00078 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00079"></a>00079     <a class="code" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rsgBindProgramFragment</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> pf);
+<a name="l00080"></a>00080 
+<a name="l00086"></a>00086 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00087"></a>00087     <a class="code" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rsgBindProgramStore</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00088"></a>00088 
+<a name="l00094"></a>00094 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00095"></a>00095     <a class="code" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rsgBindProgramVertex</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> pv);
+<a name="l00096"></a>00096 
+<a name="l00102"></a>00102 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00103"></a>00103     <a class="code" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rsgBindProgramRaster</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> pr);
+<a name="l00104"></a>00104 
+<a name="l00111"></a>00111 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00112"></a>00112     <a class="code" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rsgBindSampler</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>);
+<a name="l00113"></a>00113 
+<a name="l00122"></a>00122 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00123"></a>00123     <a class="code" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rsgBindTexture</a>(rs_program_fragment, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
+<a name="l00124"></a>00124 
+<a name="l00131"></a>00131 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00132"></a>00132     <a class="code" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rsgProgramVertexLoadProjectionMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
+<a name="l00139"></a>00139 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00140"></a>00140     <a class="code" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rsgProgramVertexLoadModelMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *model);
+<a name="l00147"></a>00147 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00148"></a>00148     <a class="code" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rsgProgramVertexLoadTextureMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *tex);
+<a name="l00155"></a>00155 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00156"></a>00156     <a class="code" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rsgProgramVertexGetProjectionMatrix</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
+<a name="l00157"></a>00157 
+<a name="l00167"></a>00167 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00168"></a>00168     <a class="code" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rsgProgramFragmentConstantColor</a>(rs_program_fragment pf, <span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
+<a name="l00169"></a>00169 
+<a name="l00178"></a>00178 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00179"></a>00179     <a class="code" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rsgBindConstant</a>(rs_program_fragment ps, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, rs_allocation c);
+<a name="l00180"></a>00180 
 <a name="l00189"></a>00189 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00190"></a>00190     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc);
+<a name="l00190"></a>00190     <a class="code" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rsgBindConstant</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> pv, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, rs_allocation c);
 <a name="l00191"></a>00191 
-<a name="l00192"></a>00192 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00193"></a>00193 <span class="preprocessor"></span>
-<a name="l00201"></a>00201 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00202"></a>00202     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc,
-<a name="l00203"></a>00203                          rs_allocation_usage_type source);
-<a name="l00204"></a>00204 
-<a name="l00205"></a>00205 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00206"></a>00206 <span class="preprocessor"></span>
-<a name="l00217"></a>00217 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00218"></a>00218     <a class="code" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rsgDrawRect</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z);
-<a name="l00219"></a>00219 
-<a name="l00237"></a>00237 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00238"></a>00238     <a class="code" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rsgDrawQuad</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1,
-<a name="l00239"></a>00239                 <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2,
-<a name="l00240"></a>00240                 <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3,
-<a name="l00241"></a>00241                 <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4);
-<a name="l00242"></a>00242 
-<a name="l00243"></a>00243 
-<a name="l00269"></a>00269 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00270"></a>00270     <a class="code" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rsgDrawQuadTexCoords</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1, <span class="keywordtype">float</span> u1, <span class="keywordtype">float</span> v1,
-<a name="l00271"></a>00271                          <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2, <span class="keywordtype">float</span> u2, <span class="keywordtype">float</span> v2,
-<a name="l00272"></a>00272                          <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3, <span class="keywordtype">float</span> u3, <span class="keywordtype">float</span> v3,
-<a name="l00273"></a>00273                          <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4, <span class="keywordtype">float</span> u4, <span class="keywordtype">float</span> v4);
-<a name="l00274"></a>00274 
-<a name="l00275"></a>00275 
-<a name="l00288"></a>00288 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00289"></a>00289     <a class="code" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rsgDrawSpriteScreenspace</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z, <span class="keywordtype">float</span> w, <span class="keywordtype">float</span> h);
-<a name="l00290"></a>00290 
-<a name="l00297"></a>00297 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00298"></a>00298     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism);
-<a name="l00305"></a>00305 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00306"></a>00306     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex);
-<a name="l00315"></a>00315 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00316"></a>00316     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> start, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
-<a name="l00317"></a>00317 
+<a name="l00197"></a>00197 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
+<a name="l00198"></a>00198     <a class="code" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rsgGetWidth</a>(<span class="keywordtype">void</span>);
+<a name="l00199"></a>00199 
+<a name="l00205"></a>00205 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
+<a name="l00206"></a>00206     <a class="code" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rsgGetHeight</a>(<span class="keywordtype">void</span>);
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 
+<a name="l00215"></a>00215 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00216"></a>00216     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc);
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00219"></a>00219 <span class="preprocessor"></span>
+<a name="l00227"></a>00227 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00228"></a>00228     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc,
+<a name="l00229"></a>00229                          rs_allocation_usage_type source);
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00232"></a>00232 <span class="preprocessor"></span>
+<a name="l00243"></a>00243 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00244"></a>00244     <a class="code" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rsgDrawRect</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z);
+<a name="l00245"></a>00245 
+<a name="l00263"></a>00263 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00264"></a>00264     <a class="code" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rsgDrawQuad</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1,
+<a name="l00265"></a>00265                 <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2,
+<a name="l00266"></a>00266                 <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3,
+<a name="l00267"></a>00267                 <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4);
+<a name="l00268"></a>00268 
+<a name="l00269"></a>00269 
+<a name="l00295"></a>00295 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00296"></a>00296     <a class="code" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rsgDrawQuadTexCoords</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1, <span class="keywordtype">float</span> u1, <span class="keywordtype">float</span> v1,
+<a name="l00297"></a>00297                          <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2, <span class="keywordtype">float</span> u2, <span class="keywordtype">float</span> v2,
+<a name="l00298"></a>00298                          <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3, <span class="keywordtype">float</span> u3, <span class="keywordtype">float</span> v3,
+<a name="l00299"></a>00299                          <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4, <span class="keywordtype">float</span> u4, <span class="keywordtype">float</span> v4);
+<a name="l00300"></a>00300 
+<a name="l00301"></a>00301 
+<a name="l00314"></a>00314 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00315"></a>00315     <a class="code" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rsgDrawSpriteScreenspace</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z, <span class="keywordtype">float</span> w, <span class="keywordtype">float</span> h);
+<a name="l00316"></a>00316 
+<a name="l00317"></a>00317 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00318"></a>00318     rsgDrawPath(<a class="code" href="structrs__path.html" title="Opaque handle to a Renderscript Path object.">rs_path</a> p);
+<a name="l00319"></a>00319 
 <a name="l00326"></a>00326 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00327"></a>00327     <a class="code" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rsgClearColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
-<a name="l00328"></a>00328 
-<a name="l00332"></a>00332 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00333"></a>00333     <a class="code" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rsgClearDepth</a>(<span class="keywordtype">float</span> value);
-<a name="l00337"></a>00337 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00338"></a>00338     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-<a name="l00342"></a>00342 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00343"></a>00343     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(rs_allocation, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-<a name="l00348"></a>00348 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00349"></a>00349     <a class="code" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rsgBindFont</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> font);
-<a name="l00357"></a>00357 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00358"></a>00358     <a class="code" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rsgFontColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
-<a name="l00363"></a>00363 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00364"></a>00364     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
-<a name="l00368"></a>00368 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00369"></a>00369     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(rs_allocation, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
-<a name="l00373"></a>00373 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00374"></a>00374     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <span class="keywordtype">float</span> *minX, <span class="keywordtype">float</span> *minY, <span class="keywordtype">float</span> *minZ,
-<a name="l00375"></a>00375                                                 <span class="keywordtype">float</span> *maxX, <span class="keywordtype">float</span> *maxY, <span class="keywordtype">float</span> *maxZ);
-<a name="l00379"></a>00379 __inline__ static <span class="keywordtype">void</span> __attribute__((overloadable, always_inline))
-<a name="l00380"></a><a class="code" href="rs__graphics_8rsh.html#a6058b6b6c8b94f96f03dc8bca6a2090b">00380</a> <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMin, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMax) {
-<a name="l00381"></a>00381     <span class="keywordtype">float</span> x1, y1, z1, x2, y2, z2;
-<a name="l00382"></a>00382     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(mesh, &amp;x1, &amp;y1, &amp;z1, &amp;x2, &amp;y2, &amp;z2);
-<a name="l00383"></a>00383     bBoxMin-&gt;x = x1;
-<a name="l00384"></a>00384     bBoxMin-&gt;y = y1;
-<a name="l00385"></a>00385     bBoxMin-&gt;z = z1;
-<a name="l00386"></a>00386     bBoxMax-&gt;x = x2;
-<a name="l00387"></a>00387     bBoxMax-&gt;y = y2;
-<a name="l00388"></a>00388     bBoxMax-&gt;z = z2;
-<a name="l00389"></a>00389 }
-<a name="l00390"></a>00390 
-<a name="l00391"></a>00391 <span class="preprocessor">#endif</span>
-<a name="l00392"></a>00392 <span class="preprocessor"></span>
+<a name="l00327"></a>00327     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism);
+<a name="l00334"></a>00334 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00335"></a>00335     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex);
+<a name="l00344"></a>00344 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00345"></a>00345     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> start, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
+<a name="l00346"></a>00346 
+<a name="l00355"></a>00355 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00356"></a>00356     <a class="code" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rsgClearColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
+<a name="l00357"></a>00357 
+<a name="l00361"></a>00361 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00362"></a>00362     <a class="code" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rsgClearDepth</a>(<span class="keywordtype">float</span> value);
+<a name="l00366"></a>00366 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00367"></a>00367     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
+<a name="l00371"></a>00371 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00372"></a>00372     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(rs_allocation, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
+<a name="l00377"></a>00377 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00378"></a>00378     <a class="code" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rsgBindFont</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> font);
+<a name="l00386"></a>00386 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00387"></a>00387     <a class="code" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rsgFontColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
+<a name="l00392"></a>00392 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00393"></a>00393     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
+<a name="l00397"></a>00397 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00398"></a>00398     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(rs_allocation, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
+<a name="l00402"></a>00402 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00403"></a>00403     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <span class="keywordtype">float</span> *minX, <span class="keywordtype">float</span> *minY, <span class="keywordtype">float</span> *minZ,
+<a name="l00404"></a>00404                                                 <span class="keywordtype">float</span> *maxX, <span class="keywordtype">float</span> *maxY, <span class="keywordtype">float</span> *maxZ);
+<a name="l00408"></a>00408 __inline__ static <span class="keywordtype">void</span> __attribute__((overloadable, always_inline))
+<a name="l00409"></a><a class="code" href="rs__graphics_8rsh.html#a6058b6b6c8b94f96f03dc8bca6a2090b">00409</a> <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMin, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMax) {
+<a name="l00410"></a>00410     <span class="keywordtype">float</span> x1, y1, z1, x2, y2, z2;
+<a name="l00411"></a>00411     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(mesh, &amp;x1, &amp;y1, &amp;z1, &amp;x2, &amp;y2, &amp;z2);
+<a name="l00412"></a>00412     bBoxMin-&gt;x = x1;
+<a name="l00413"></a>00413     bBoxMin-&gt;y = y1;
+<a name="l00414"></a>00414     bBoxMin-&gt;z = z1;
+<a name="l00415"></a>00415     bBoxMax-&gt;x = x2;
+<a name="l00416"></a>00416     bBoxMax-&gt;y = y2;
+<a name="l00417"></a>00417     bBoxMax-&gt;z = z2;
+<a name="l00418"></a>00418 }
+<a name="l00419"></a>00419 
+<a name="l00420"></a>00420 <span class="preprocessor">#endif</span>
+<a name="l00421"></a>00421 <span class="preprocessor"></span>
 </pre></div></div>
 </div>
 
diff --git a/docs/html/reference/renderscript/rs__math_8rsh.html b/docs/html/reference/renderscript/rs__math_8rsh.html
index 9415c3a..96d5e8f 100644
--- a/docs/html/reference/renderscript/rs__math_8rsh.html
+++ b/docs/html/reference/renderscript/rs__math_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh File Reference</title>
+<title>rs_math.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,7 +27,7 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh File Reference</div>  </div>
+<div class="title">rs_math.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
diff --git a/docs/html/reference/renderscript/rs__math_8rsh_source.html b/docs/html/reference/renderscript/rs__math_8rsh_source.html
index c056994..eb4ddac 100644
--- a/docs/html/reference/renderscript/rs__math_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__math_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh Source File</title>
+<title>rs_math.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh</div>  </div>
+<div class="title">rs_math.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__math_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
diff --git a/docs/html/reference/renderscript/rs__matrix_8rsh.html b/docs/html/reference/renderscript/rs__matrix_8rsh.html
index b956301..583a92a 100644
--- a/docs/html/reference/renderscript/rs__matrix_8rsh.html
+++ b/docs/html/reference/renderscript/rs__matrix_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh File Reference</title>
+<title>rs_matrix.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,7 +27,7 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh File Reference</div>  </div>
+<div class="title">rs_matrix.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
diff --git a/docs/html/reference/renderscript/rs__matrix_8rsh_source.html b/docs/html/reference/renderscript/rs__matrix_8rsh_source.html
index 531a3e3..be83c9b 100644
--- a/docs/html/reference/renderscript/rs__matrix_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__matrix_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh Source File</title>
+<title>rs_matrix.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh</div>  </div>
+<div class="title">rs_matrix.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__matrix_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
diff --git a/docs/html/reference/renderscript/rs__mesh_8rsh.html b/docs/html/reference/renderscript/rs__mesh_8rsh.html
new file mode 100644
index 0000000..81ac93e
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__mesh_8rsh.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_mesh.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_mesh.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Mesh routines. </p>
+
+<p>Definition in file <a class="el" href="rs__mesh_8rsh_source.html">rs_mesh.rsh</a>.</p>
+</div></div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__mesh_8rsh_source.html b/docs/html/reference/renderscript/rs__mesh_8rsh_source.html
new file mode 100644
index 0000000..e344b47
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__mesh_8rsh_source.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_mesh.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_mesh.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__mesh_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_MESH_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_MESH_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="comment">// New API&#39;s</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00037"></a>00037 <span class="keyword">extern</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00038"></a>00038     rsgMeshGetVertexAllocationCount(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> m);
+<a name="l00039"></a>00039 
+<a name="l00049"></a>00049 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00050"></a>00050     rsgMeshGetPrimitiveCount(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> m);
+<a name="l00051"></a>00051 
+<a name="l00060"></a>00060 extern <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> __attribute__((overloadable))
+<a name="l00061"></a>00061     rsgMeshGetVertexAllocation(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
+<a name="l00062"></a>00062 
+<a name="l00071"></a>00071 extern <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> __attribute__((overloadable))
+<a name="l00072"></a>00072     rsgMeshGetIndexAllocation(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
+<a name="l00073"></a>00073 
+<a name="l00082"></a>00082 extern rs_primitive __attribute__((overloadable))
+<a name="l00083"></a>00083     rsgMeshGetPrimitive(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span>
+<a name="l00087"></a>00087 <span class="preprocessor">#endif // __RS_MESH_RSH__</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__object_8rsh.html b/docs/html/reference/renderscript/rs__object_8rsh.html
index 464e7e5..9ac7bb8 100644
--- a/docs/html/reference/renderscript/rs__object_8rsh.html
+++ b/docs/html/reference/renderscript/rs__object_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh File Reference</title>
+<title>rs_object.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,7 +27,7 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh File Reference</div>  </div>
+<div class="title">rs_object.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
@@ -38,6 +38,7 @@
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#af3446b1b9c2e4b600cdc8d828f3dbb59">rsSetObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> *dst, <a class="el" href="structrs__allocation.html">rs_allocation</a> src)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5132f90b4aaf8d2e35e6ad021fb08175">rsSetObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> *dst, <a class="el" href="structrs__sampler.html">rs_sampler</a> src)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a9dfc520ed267ac9733760bc628a93cae">rsSetObject</a> (<a class="el" href="structrs__script.html">rs_script</a> *dst, <a class="el" href="structrs__script.html">rs_script</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a9c2f648c1e68018621a3123545a21d83">rsSetObject</a> (<a class="el" href="structrs__path.html">rs_path</a> *dst, <a class="el" href="structrs__path.html">rs_path</a> src)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a4d6368cf71d6fd2e55efbe23af6cfd7c">rsSetObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> *dst, <a class="el" href="structrs__mesh.html">rs_mesh</a> src)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a8135bceeb7b3ec8bf9a49d04e39bd565">rsSetObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *dst, <a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> src)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5512c023d40e416bea709f8d8caf9674">rsSetObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *dst, <a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> src)</td></tr>
@@ -49,6 +50,7 @@
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5b944e2762ce1a44f7e63abd41851bcd">rsClearObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> *dst)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a51fe2098cc5c2ff73ceff8cc46b6dd89">rsClearObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> *dst)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a0034d7e67f80a9ce2e1139f1cb54b9a4">rsClearObject</a> (<a class="el" href="structrs__script.html">rs_script</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a4cd7e401ffe73eb23dffb01d5faf14cc">rsClearObject</a> (<a class="el" href="structrs__path.html">rs_path</a> *dst)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a6f26564cf4fa1bcd46db51a478bf91b9">rsClearObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> *dst)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afc6aca3a903d5e2021d9eeab4836fd26">rsClearObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *dst)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a712fcc988eedf21845495477cec54029">rsClearObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *dst)</td></tr>
@@ -60,6 +62,7 @@
 <tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afd33063fc6e45cb23f9a6f68dc2976ba">rsIsObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a509c7f0eacf1f07a3e7afaa029168f11">rsIsObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a>)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a6dc9db5fb60856b04c0b495a85affcbc">rsIsObject</a> (<a class="el" href="structrs__script.html">rs_script</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a33f979562536752539f35e6e831dab62">rsIsObject</a> (<a class="el" href="structrs__path.html">rs_path</a>)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#aa1860f7322da25f4c4a1727571b01e2b">rsIsObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a>)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afa57d9148778b03b270facbdbcb88816">rsIsObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#acaa5da532eab1803a72fc4af2e7c6573">rsIsObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>)</td></tr>
@@ -163,6 +166,24 @@
 
 </div>
 </div>
+<a class="anchor" id="a4cd7e401ffe73eb23dffb01d5faf14cc"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a4cd7e401ffe73eb23dffb01d5faf14cc" args="(rs_path *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
 <a class="anchor" id="a6f26564cf4fa1bcd46db51a478bf91b9"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a6f26564cf4fa1bcd46db51a478bf91b9" args="(rs_mesh *dst)" -->
 <div class="memitem">
 <div class="memproto">
@@ -362,6 +383,24 @@
 
 </div>
 </div>
+<a class="anchor" id="a33f979562536752539f35e6e831dab62"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a33f979562536752539f35e6e831dab62" args="(rs_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
 <a class="anchor" id="aa1860f7322da25f4c4a1727571b01e2b"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="aa1860f7322da25f4c4a1727571b01e2b" args="(rs_mesh)" -->
 <div class="memitem">
 <div class="memproto">
@@ -617,6 +656,34 @@
 
 </div>
 </div>
+<a class="anchor" id="a9c2f648c1e68018621a3123545a21d83"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a9c2f648c1e68018621a3123545a21d83" args="(rs_path *dst, rs_path src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
 <a class="anchor" id="a4d6368cf71d6fd2e55efbe23af6cfd7c"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a4d6368cf71d6fd2e55efbe23af6cfd7c" args="(rs_mesh *dst, rs_mesh src)" -->
 <div class="memitem">
 <div class="memproto">
diff --git a/docs/html/reference/renderscript/rs__object_8rsh_source.html b/docs/html/reference/renderscript/rs__object_8rsh_source.html
index 0f9b488..e55769b 100644
--- a/docs/html/reference/renderscript/rs__object_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__object_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh Source File</title>
+<title>rs_object.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh</div>  </div>
+<div class="title">rs_object.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__object_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
@@ -58,67 +58,73 @@
 <a name="l00053"></a>00053 extern <span class="keywordtype">void</span> __attribute__((overloadable))
 <a name="l00054"></a>00054     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> *dst, <a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> src);
 <a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00059"></a>00059     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> *dst, <a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> src);
+<a name="l00059"></a>00059     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__path.html" title="Opaque handle to a Renderscript Path object.">rs_path</a> *dst, <a class="code" href="structrs__path.html" title="Opaque handle to a Renderscript Path object.">rs_path</a> src);
 <a name="l00063"></a>00063 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00064"></a>00064     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> *dst, <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> src);
+<a name="l00064"></a>00064     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> *dst, <a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> src);
 <a name="l00068"></a>00068 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00069"></a>00069     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> *dst, <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> src);
+<a name="l00069"></a>00069     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> *dst, <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> src);
 <a name="l00073"></a>00073 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00074"></a>00074     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> *dst, <a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> src);
+<a name="l00074"></a>00074     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> *dst, <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> src);
 <a name="l00078"></a>00078 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00079"></a>00079     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> *dst, <a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> src);
+<a name="l00079"></a>00079     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> *dst, <a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> src);
 <a name="l00083"></a>00083 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00084"></a>00084     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> *dst, <a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> src);
-<a name="l00085"></a>00085 
-<a name="l00091"></a>00091 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00092"></a>00092     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> *dst);
+<a name="l00084"></a>00084     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> *dst, <a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> src);
+<a name="l00088"></a>00088 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00089"></a>00089     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> *dst, <a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> src);
+<a name="l00090"></a>00090 
 <a name="l00096"></a>00096 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00097"></a>00097     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a> *dst);
+<a name="l00097"></a>00097     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> *dst);
 <a name="l00101"></a>00101 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00102"></a>00102     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> *dst);
+<a name="l00102"></a>00102     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a> *dst);
 <a name="l00106"></a>00106 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00107"></a>00107     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> *dst);
+<a name="l00107"></a>00107     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> *dst);
 <a name="l00111"></a>00111 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00112"></a>00112     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> *dst);
+<a name="l00112"></a>00112     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> *dst);
 <a name="l00116"></a>00116 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00117"></a>00117     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> *dst);
+<a name="l00117"></a>00117     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> *dst);
 <a name="l00121"></a>00121 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00122"></a>00122     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> *dst);
+<a name="l00122"></a>00122     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__path.html" title="Opaque handle to a Renderscript Path object.">rs_path</a> *dst);
 <a name="l00126"></a>00126 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00127"></a>00127     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> *dst);
+<a name="l00127"></a>00127     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> *dst);
 <a name="l00131"></a>00131 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00132"></a>00132     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> *dst);
+<a name="l00132"></a>00132     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> *dst);
 <a name="l00136"></a>00136 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00137"></a>00137     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> *dst);
+<a name="l00137"></a>00137     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> *dst);
 <a name="l00141"></a>00141 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00142"></a>00142     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> *dst);
-<a name="l00143"></a>00143 
-<a name="l00144"></a>00144 
-<a name="l00145"></a>00145 
-<a name="l00152"></a>00152 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00153"></a>00153     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a>);
-<a name="l00157"></a>00157 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00158"></a>00158     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a>);
+<a name="l00142"></a>00142     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> *dst);
+<a name="l00146"></a>00146 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00147"></a>00147     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> *dst);
+<a name="l00151"></a>00151 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00152"></a>00152     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> *dst);
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155 
 <a name="l00162"></a>00162 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00163"></a>00163     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
+<a name="l00163"></a>00163     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a>);
 <a name="l00167"></a>00167 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00168"></a>00168     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>);
+<a name="l00168"></a>00168     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a>);
 <a name="l00172"></a>00172 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00173"></a>00173     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a>);
+<a name="l00173"></a>00173     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
 <a name="l00177"></a>00177 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00178"></a>00178     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a>);
+<a name="l00178"></a>00178     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>);
 <a name="l00182"></a>00182 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00183"></a>00183     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>);
+<a name="l00183"></a>00183     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a>);
 <a name="l00187"></a>00187 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00188"></a>00188     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a>);
+<a name="l00188"></a>00188     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__path.html" title="Opaque handle to a Renderscript Path object.">rs_path</a>);
 <a name="l00192"></a>00192 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00193"></a>00193     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a>);
+<a name="l00193"></a>00193     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a>);
 <a name="l00197"></a>00197 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00198"></a>00198     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a>);
+<a name="l00198"></a>00198     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>);
 <a name="l00202"></a>00202 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00203"></a>00203     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a>);
-<a name="l00204"></a>00204 
-<a name="l00205"></a>00205 <span class="preprocessor">#endif</span>
+<a name="l00203"></a>00203     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a>);
+<a name="l00207"></a>00207 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00208"></a>00208     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a>);
+<a name="l00212"></a>00212 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00213"></a>00213     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a>);
+<a name="l00217"></a>00217 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00218"></a>00218     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a>);
+<a name="l00219"></a>00219 
+<a name="l00220"></a>00220 <span class="preprocessor">#endif</span>
 </pre></div></div>
 </div>
 
diff --git a/docs/html/reference/renderscript/rs__program_8rsh.html b/docs/html/reference/renderscript/rs__program_8rsh.html
new file mode 100644
index 0000000..f64cc7b
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__program_8rsh.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_program.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_program.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Program object routines. </p>
+
+<p>Definition in file <a class="el" href="rs__program_8rsh_source.html">rs_program.rsh</a>.</p>
+</div></div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__program_8rsh_source.html b/docs/html/reference/renderscript/rs__program_8rsh_source.html
new file mode 100644
index 0000000..dc901b3
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__program_8rsh_source.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_program.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_program.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__program_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_PROGRAM_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_PROGRAM_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00033"></a>00033 <span class="keyword">extern</span> rs_depth_func __attribute__((overloadable))
+<a name="l00034"></a>00034     rsgProgramStoreGetDepthFunc(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00035"></a>00035 
+<a name="l00041"></a>00041 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00042"></a>00042     rsgProgramStoreIsDepthMaskEnabled(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00048"></a>00048 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00049"></a>00049     rsgProgramStoreIsColorMaskRedEnabled(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00050"></a>00050 
+<a name="l00056"></a>00056 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00057"></a>00057     rsgProgramStoreIsColorMaskGreenEnabled(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00058"></a>00058 
+<a name="l00064"></a>00064 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00065"></a>00065     rsgProgramStoreIsColorMaskBlueEnabled(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00066"></a>00066 
+<a name="l00072"></a>00072 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00073"></a>00073     rsgProgramStoreIsColorMaskAlphaEnabled(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00074"></a>00074 
+<a name="l00080"></a>00080 extern rs_blend_src_func __attribute__((overloadable))
+<a name="l00081"></a>00081         rsgProgramStoreGetBlendSrcFunc(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00082"></a>00082 
+<a name="l00088"></a>00088 extern rs_blend_dst_func __attribute__((overloadable))
+<a name="l00089"></a>00089     rsgProgramStoreGetBlendDstFunc(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00090"></a>00090 
+<a name="l00096"></a>00096 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00097"></a>00097     rsgProgramStoreIsDitherEnabled(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00098"></a>00098 
+<a name="l00104"></a>00104 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00105"></a>00105     rsgProgramRasterIsPointSpriteEnabled(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> pr);
+<a name="l00106"></a>00106 
+<a name="l00112"></a>00112 extern rs_cull_mode __attribute__((overloadable))
+<a name="l00113"></a>00113     rsgProgramRasterGetCullMode(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> pr);
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span>
+<a name="l00117"></a>00117 <span class="preprocessor">#endif // __RS_PROGRAM_RSH__</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__quaternion_8rsh.html b/docs/html/reference/renderscript/rs__quaternion_8rsh.html
index bd6979c..389b792 100644
--- a/docs/html/reference/renderscript/rs__quaternion_8rsh.html
+++ b/docs/html/reference/renderscript/rs__quaternion_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh File Reference</title>
+<title>rs_quaternion.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -27,7 +27,7 @@
   <div class="summary">
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh File Reference</div>  </div>
+<div class="title">rs_quaternion.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
diff --git a/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html b/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html
index c08565a..93e4e5d 100644
--- a/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh Source File</title>
+<title>rs_quaternion.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh</div>  </div>
+<div class="title">rs_quaternion.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__quaternion_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
diff --git a/docs/html/reference/renderscript/rs__sampler_8rsh.html b/docs/html/reference/renderscript/rs__sampler_8rsh.html
new file mode 100644
index 0000000..f45dd28
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__sampler_8rsh.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_sampler.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_sampler.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Sampler routines. </p>
+
+<p>Definition in file <a class="el" href="rs__sampler_8rsh_source.html">rs_sampler.rsh</a>.</p>
+</div></div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__sampler_8rsh_source.html b/docs/html/reference/renderscript/rs__sampler_8rsh_source.html
new file mode 100644
index 0000000..30fb9c0
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__sampler_8rsh_source.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_sampler.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_sampler.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__sampler_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_SAMPLER_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_SAMPLER_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="comment">// New API&#39;s</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="keyword">extern</span> rs_sampler_value __attribute__((overloadable))
+<a name="l00036"></a>00036     rsSamplerGetMinification(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s);
+<a name="l00037"></a>00037 
+<a name="l00044"></a>00044 extern rs_sampler_value __attribute__((overloadable))
+<a name="l00045"></a>00045     rsSamplerGetMagnification(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s);
+<a name="l00046"></a>00046 
+<a name="l00053"></a>00053 extern rs_sampler_value __attribute__((overloadable))
+<a name="l00054"></a>00054     rsSamplerGetWrapS(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s);
+<a name="l00055"></a>00055 
+<a name="l00062"></a>00062 extern rs_sampler_value __attribute__((overloadable))
+<a name="l00063"></a>00063     rsSamplerGetWrapT(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s);
+<a name="l00064"></a>00064 
+<a name="l00071"></a>00071 extern <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00072"></a>00072     rsSamplerGetAnisotropy(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> s);
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span>
+<a name="l00076"></a>00076 <span class="preprocessor">#endif // __RS_SAMPLER_RSH__</span>
+<a name="l00077"></a>00077 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__time_8rsh.html b/docs/html/reference/renderscript/rs__time_8rsh.html
index 34ac9cd..a3e63d0 100644
--- a/docs/html/reference/renderscript/rs__time_8rsh.html
+++ b/docs/html/reference/renderscript/rs__time_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh File Reference</title>
+<title>rs_time.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -29,7 +29,7 @@
 <a href="#typedef-members">Typedefs</a> &#124;
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh File Reference</div>  </div>
+<div class="title">rs_time.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <table class="memberdecls">
diff --git a/docs/html/reference/renderscript/rs__time_8rsh_source.html b/docs/html/reference/renderscript/rs__time_8rsh_source.html
index 1c5c74b..208924a 100644
--- a/docs/html/reference/renderscript/rs__time_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__time_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh Source File</title>
+<title>rs_time.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh</div>  </div>
+<div class="title">rs_time.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__time_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
diff --git a/docs/html/reference/renderscript/rs__types_8rsh.html b/docs/html/reference/renderscript/rs__types_8rsh.html
index bd601f2..c3caa6f 100644
--- a/docs/html/reference/renderscript/rs__types_8rsh.html
+++ b/docs/html/reference/renderscript/rs__types_8rsh.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh File Reference</title>
+<title>rs_types.rsh File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -28,7 +28,7 @@
 <a href="#nested-classes">Data Structures</a> &#124;
 <a href="#typedef-members">Typedefs</a>  </div>
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh File Reference</div>  </div>
+<div class="title">rs_types.rsh File Reference</div>  </div>
 </div>
 <div class="contents">
 <div class="textblock"><code>#include &quot;stdbool.h&quot;</code><br/>
@@ -47,6 +47,8 @@
 <tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript script object.  <a href="structrs__script.html#details">More...</a><br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__mesh.html">rs_mesh</a></td></tr>
 <tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript mesh object.  <a href="structrs__mesh.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__path.html">rs_path</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript Path object.  <a href="structrs__path.html#details">More...</a><br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a></td></tr>
 <tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript ProgramFragment object.  <a href="structrs__program__fragment.html#details">More...</a><br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a></td></tr>
@@ -132,7 +134,7 @@
 <div class="memdoc">
 <p>Vector version of the basic char type. Provides two char fields packed into a single 16 bit field with 16 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00273">273</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00279">279</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -148,7 +150,7 @@
 <div class="memdoc">
 <p>Vector version of the basic char type. Provides three char fields packed into a single 32 bit field with 32 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00278">278</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00284">284</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -164,7 +166,7 @@
 <div class="memdoc">
 <p>Vector version of the basic char type. Provides four char fields packed into a single 32 bit field with 32 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00283">283</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00289">289</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -180,7 +182,7 @@
 <div class="memdoc">
 <p>Vector version of the basic double type. Provides two double fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00193">193</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00199">199</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -196,7 +198,7 @@
 <div class="memdoc">
 <p>Vector version of the basic double type. Provides three double fields packed into a single 256 bit field with 256 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00198">198</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00204">204</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -212,7 +214,7 @@
 <div class="memdoc">
 <p>Vector version of the basic double type. Provides four double fields packed into a single 256 bit field with 256 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00203">203</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00209">209</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -228,7 +230,7 @@
 <div class="memdoc">
 <p>Vector version of the basic float type. Provides two float fields packed into a single 64 bit field with 64 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00176">176</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00182">182</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -244,7 +246,7 @@
 <div class="memdoc">
 <p>Vector version of the basic float type. Provides three float fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00181">181</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00187">187</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -260,7 +262,7 @@
 <div class="memdoc">
 <p>Vector version of the basic float type. Provides four float fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00187">187</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00193">193</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -292,7 +294,7 @@
 <div class="memdoc">
 <p>Vector version of the basic int type. Provides two int fields packed into a single 64 bit field with 64 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00305">305</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00311">311</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -308,7 +310,7 @@
 <div class="memdoc">
 <p>Vector version of the basic int type. Provides three int fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00310">310</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00316">316</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -340,7 +342,7 @@
 <div class="memdoc">
 <p>Vector version of the basic int type. Provides two four fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00315">315</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00321">321</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -388,7 +390,7 @@
 <div class="memdoc">
 <p>Vector version of the basic long type. Provides two long fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00321">321</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00327">327</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -404,7 +406,7 @@
 <div class="memdoc">
 <p>Vector version of the basic long type. Provides three long fields packed into a single 256 bit field with 256 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00326">326</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00332">332</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -420,7 +422,7 @@
 <div class="memdoc">
 <p>Vector version of the basic long type. Provides four long fields packed into a single 256 bit field with 256 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00331">331</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00337">337</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -436,7 +438,7 @@
 <div class="memdoc">
 <p>quaternion type for use with the quaternion functions </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00364">364</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00370">370</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -452,7 +454,7 @@
 <div class="memdoc">
 <p>Vector version of the basic short type. Provides two short fields packed into a single 32 bit field with 32 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00289">289</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00295">295</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -468,7 +470,7 @@
 <div class="memdoc">
 <p>Vector version of the basic short type. Provides three short fields packed into a single 64 bit field with 64 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00294">294</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00300">300</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -484,7 +486,7 @@
 <div class="memdoc">
 <p>Vector version of the basic short type. Provides four short fields packed into a single 64 bit field with 64 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00299">299</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00305">305</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -548,7 +550,7 @@
 <div class="memdoc">
 <p>Vector version of the basic uchar type. Provides two uchar fields packed into a single 16 bit field with 16 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00209">209</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00215">215</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -564,7 +566,7 @@
 <div class="memdoc">
 <p>Vector version of the basic uchar type. Provides three uchar fields packed into a single 32 bit field with 32 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00214">214</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00220">220</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -580,7 +582,7 @@
 <div class="memdoc">
 <p>Vector version of the basic uchar type. Provides four uchar fields packed into a single 32 bit field with 32 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00219">219</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00225">225</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -628,7 +630,7 @@
 <div class="memdoc">
 <p>Vector version of the basic uint type. Provides two uint fields packed into a single 64 bit field with 64 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00241">241</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00247">247</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -644,7 +646,7 @@
 <div class="memdoc">
 <p>Vector version of the basic uint type. Provides three uint fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00246">246</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00252">252</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -676,7 +678,7 @@
 <div class="memdoc">
 <p>Vector version of the basic uint type. Provides four uint fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00251">251</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00257">257</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -740,7 +742,7 @@
 <div class="memdoc">
 <p>Vector version of the basic ulong type. Provides two ulong fields packed into a single 128 bit field with 128 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00257">257</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00263">263</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -756,7 +758,7 @@
 <div class="memdoc">
 <p>Vector version of the basic ulong type. Provides three ulong fields packed into a single 256 bit field with 256 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00262">262</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00268">268</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -772,7 +774,7 @@
 <div class="memdoc">
 <p>Vector version of the basic ulong type. Provides four ulong fields packed into a single 256 bit field with 256 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00267">267</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00273">273</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -804,7 +806,7 @@
 <div class="memdoc">
 <p>Vector version of the basic ushort type. Provides two ushort fields packed into a single 32 bit field with 32 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00225">225</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00231">231</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -820,7 +822,7 @@
 <div class="memdoc">
 <p>Vector version of the basic ushort type. Provides three ushort fields packed into a single 64 bit field with 64 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00230">230</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00236">236</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
@@ -836,7 +838,7 @@
 <div class="memdoc">
 <p>Vector version of the basic ushort type. Provides four ushort fields packed into a single 64 bit field with 64 bit alignment. </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00235">235</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00241">241</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 
 </div>
 </div>
diff --git a/docs/html/reference/renderscript/rs__types_8rsh_source.html b/docs/html/reference/renderscript/rs__types_8rsh_source.html
index 96c55e1..641a753 100644
--- a/docs/html/reference/renderscript/rs__types_8rsh_source.html
+++ b/docs/html/reference/renderscript/rs__types_8rsh_source.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 
-<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh Source File</title>
+<title>rs_types.rsh Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 
@@ -24,7 +24,7 @@
   </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh</div>  </div>
+<div class="title">rs_types.rsh</div>  </div>
 </div>
 <div class="contents">
 <a href="rs__types_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
@@ -70,89 +70,214 @@
 <a name="l00127"></a><a class="code" href="structrs__sampler.html">00127</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>;
 <a name="l00133"></a><a class="code" href="structrs__script.html">00133</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a>;
 <a name="l00139"></a><a class="code" href="structrs__mesh.html">00139</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a>;
-<a name="l00145"></a><a class="code" href="structrs__program__fragment.html">00145</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>;
-<a name="l00151"></a><a class="code" href="structrs__program__vertex.html">00151</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a>;
-<a name="l00157"></a><a class="code" href="structrs__program__raster.html">00157</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a>;
-<a name="l00163"></a><a class="code" href="structrs__program__store.html">00163</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a>;
-<a name="l00169"></a><a class="code" href="structrs__font.html">00169</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a>;
-<a name="l00170"></a>00170 
-<a name="l00176"></a><a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">00176</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((ext_vector_type(2)));
-<a name="l00181"></a><a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">00181</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((ext_vector_type(3)));
-<a name="l00187"></a><a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">00187</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((ext_vector_type(4)));
-<a name="l00188"></a>00188 
-<a name="l00193"></a><a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">00193</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a> __attribute__((ext_vector_type(2)));
-<a name="l00198"></a><a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">00198</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a> __attribute__((ext_vector_type(3)));
-<a name="l00203"></a><a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">00203</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a> __attribute__((ext_vector_type(4)));
-<a name="l00204"></a>00204 
-<a name="l00209"></a><a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">00209</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> __attribute__((ext_vector_type(2)));
-<a name="l00214"></a><a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">00214</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a> __attribute__((ext_vector_type(3)));
-<a name="l00219"></a><a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">00219</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((ext_vector_type(4)));
-<a name="l00220"></a>00220 
-<a name="l00225"></a><a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">00225</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a> __attribute__((ext_vector_type(2)));
-<a name="l00230"></a><a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">00230</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a> __attribute__((ext_vector_type(3)));
-<a name="l00235"></a><a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">00235</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a> __attribute__((ext_vector_type(4)));
-<a name="l00236"></a>00236 
-<a name="l00241"></a><a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">00241</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a> __attribute__((ext_vector_type(2)));
-<a name="l00246"></a><a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">00246</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a> __attribute__((ext_vector_type(3)));
-<a name="l00251"></a><a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">00251</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a> __attribute__((ext_vector_type(4)));
-<a name="l00252"></a>00252 
-<a name="l00257"></a><a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">00257</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a> __attribute__((ext_vector_type(2)));
-<a name="l00262"></a><a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">00262</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a> __attribute__((ext_vector_type(3)));
-<a name="l00267"></a><a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">00267</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a> __attribute__((ext_vector_type(4)));
-<a name="l00268"></a>00268 
-<a name="l00273"></a><a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">00273</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a> __attribute__((ext_vector_type(2)));
-<a name="l00278"></a><a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">00278</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a> __attribute__((ext_vector_type(3)));
-<a name="l00283"></a><a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">00283</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a> __attribute__((ext_vector_type(4)));
-<a name="l00284"></a>00284 
-<a name="l00289"></a><a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">00289</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a> __attribute__((ext_vector_type(2)));
-<a name="l00294"></a><a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">00294</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a> __attribute__((ext_vector_type(3)));
-<a name="l00299"></a><a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">00299</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a> __attribute__((ext_vector_type(4)));
-<a name="l00300"></a>00300 
-<a name="l00305"></a><a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">00305</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a> __attribute__((ext_vector_type(2)));
-<a name="l00310"></a><a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">00310</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a> __attribute__((ext_vector_type(3)));
-<a name="l00315"></a><a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">00315</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a> __attribute__((ext_vector_type(4)));
-<a name="l00316"></a>00316 
-<a name="l00321"></a><a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">00321</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a> __attribute__((ext_vector_type(2)));
-<a name="l00326"></a><a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">00326</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a> __attribute__((ext_vector_type(3)));
-<a name="l00331"></a><a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">00331</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a> __attribute__((ext_vector_type(4)));
-<a name="l00332"></a>00332 
-<a name="l00339"></a><a class="code" href="structrs__matrix4x4.html">00339</a> typedef struct {
-<a name="l00340"></a>00340     <span class="keywordtype">float</span> m[16];
-<a name="l00341"></a>00341 } <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a>;
-<a name="l00348"></a><a class="code" href="structrs__matrix3x3.html">00348</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00349"></a>00349     <span class="keywordtype">float</span> m[9];
-<a name="l00350"></a>00350 } <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a>;
-<a name="l00357"></a><a class="code" href="structrs__matrix2x2.html">00357</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00358"></a>00358     <span class="keywordtype">float</span> m[4];
-<a name="l00359"></a>00359 } <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a>;
-<a name="l00360"></a>00360 
-<a name="l00364"></a><a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">00364</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a>;
-<a name="l00365"></a>00365 
-<a name="l00366"></a>00366 <span class="preprocessor">#define RS_PACKED __attribute__((packed, aligned(4)))</span>
-<a name="l00367"></a>00367 <span class="preprocessor"></span><span class="preprocessor">#define NULL ((const void *)0)</span>
-<a name="l00368"></a>00368 <span class="preprocessor"></span>
-<a name="l00369"></a>00369 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00370"></a>00370 <span class="preprocessor"></span>
-<a name="l00374"></a>00374 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00375"></a>00375     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
-<a name="l00376"></a>00376     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
-<a name="l00377"></a>00377     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
-<a name="l00378"></a>00378     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
-<a name="l00379"></a>00379     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
-<a name="l00380"></a>00380     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
-<a name="l00381"></a>00381 } rs_allocation_cubemap_face;
-<a name="l00382"></a>00382 
-<a name="l00389"></a>00389 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00390"></a>00390     RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
-<a name="l00391"></a>00391     RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
-<a name="l00392"></a>00392     RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
-<a name="l00393"></a>00393     RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
-<a name="l00394"></a>00394     RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010
-<a name="l00395"></a>00395 } rs_allocation_usage_type;
-<a name="l00396"></a>00396 
-<a name="l00397"></a>00397 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00398"></a>00398 <span class="preprocessor"></span>
-<a name="l00399"></a>00399 <span class="preprocessor">#endif</span>
+<a name="l00145"></a><a class="code" href="structrs__path.html">00145</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__path.html" title="Opaque handle to a Renderscript Path object.">rs_path</a>;
+<a name="l00151"></a><a class="code" href="structrs__program__fragment.html">00151</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>;
+<a name="l00157"></a><a class="code" href="structrs__program__vertex.html">00157</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a>;
+<a name="l00163"></a><a class="code" href="structrs__program__raster.html">00163</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a>;
+<a name="l00169"></a><a class="code" href="structrs__program__store.html">00169</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a>;
+<a name="l00175"></a><a class="code" href="structrs__font.html">00175</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a>;
+<a name="l00176"></a>00176 
+<a name="l00182"></a><a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">00182</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((ext_vector_type(2)));
+<a name="l00187"></a><a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">00187</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((ext_vector_type(3)));
+<a name="l00193"></a><a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">00193</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((ext_vector_type(4)));
+<a name="l00194"></a>00194 
+<a name="l00199"></a><a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">00199</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a> __attribute__((ext_vector_type(2)));
+<a name="l00204"></a><a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">00204</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a> __attribute__((ext_vector_type(3)));
+<a name="l00209"></a><a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">00209</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a> __attribute__((ext_vector_type(4)));
+<a name="l00210"></a>00210 
+<a name="l00215"></a><a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">00215</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> __attribute__((ext_vector_type(2)));
+<a name="l00220"></a><a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">00220</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a> __attribute__((ext_vector_type(3)));
+<a name="l00225"></a><a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">00225</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((ext_vector_type(4)));
+<a name="l00226"></a>00226 
+<a name="l00231"></a><a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">00231</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a> __attribute__((ext_vector_type(2)));
+<a name="l00236"></a><a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">00236</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a> __attribute__((ext_vector_type(3)));
+<a name="l00241"></a><a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">00241</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a> __attribute__((ext_vector_type(4)));
+<a name="l00242"></a>00242 
+<a name="l00247"></a><a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">00247</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a> __attribute__((ext_vector_type(2)));
+<a name="l00252"></a><a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">00252</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a> __attribute__((ext_vector_type(3)));
+<a name="l00257"></a><a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">00257</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a> __attribute__((ext_vector_type(4)));
+<a name="l00258"></a>00258 
+<a name="l00263"></a><a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">00263</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a> __attribute__((ext_vector_type(2)));
+<a name="l00268"></a><a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">00268</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a> __attribute__((ext_vector_type(3)));
+<a name="l00273"></a><a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">00273</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a> __attribute__((ext_vector_type(4)));
+<a name="l00274"></a>00274 
+<a name="l00279"></a><a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">00279</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a> __attribute__((ext_vector_type(2)));
+<a name="l00284"></a><a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">00284</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a> __attribute__((ext_vector_type(3)));
+<a name="l00289"></a><a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">00289</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a> __attribute__((ext_vector_type(4)));
+<a name="l00290"></a>00290 
+<a name="l00295"></a><a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">00295</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a> __attribute__((ext_vector_type(2)));
+<a name="l00300"></a><a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">00300</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a> __attribute__((ext_vector_type(3)));
+<a name="l00305"></a><a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">00305</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a> __attribute__((ext_vector_type(4)));
+<a name="l00306"></a>00306 
+<a name="l00311"></a><a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">00311</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a> __attribute__((ext_vector_type(2)));
+<a name="l00316"></a><a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">00316</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a> __attribute__((ext_vector_type(3)));
+<a name="l00321"></a><a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">00321</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a> __attribute__((ext_vector_type(4)));
+<a name="l00322"></a>00322 
+<a name="l00327"></a><a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">00327</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a> __attribute__((ext_vector_type(2)));
+<a name="l00332"></a><a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">00332</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a> __attribute__((ext_vector_type(3)));
+<a name="l00337"></a><a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">00337</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a> __attribute__((ext_vector_type(4)));
+<a name="l00338"></a>00338 
+<a name="l00345"></a><a class="code" href="structrs__matrix4x4.html">00345</a> typedef struct {
+<a name="l00346"></a>00346     <span class="keywordtype">float</span> m[16];
+<a name="l00347"></a>00347 } <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a>;
+<a name="l00354"></a><a class="code" href="structrs__matrix3x3.html">00354</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00355"></a>00355     <span class="keywordtype">float</span> m[9];
+<a name="l00356"></a>00356 } <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a>;
+<a name="l00363"></a><a class="code" href="structrs__matrix2x2.html">00363</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00364"></a>00364     <span class="keywordtype">float</span> m[4];
+<a name="l00365"></a>00365 } <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a>;
+<a name="l00366"></a>00366 
+<a name="l00370"></a><a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">00370</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a>;
+<a name="l00371"></a>00371 
+<a name="l00372"></a>00372 <span class="preprocessor">#define RS_PACKED __attribute__((packed, aligned(4)))</span>
+<a name="l00373"></a>00373 <span class="preprocessor"></span><span class="preprocessor">#define NULL ((void *)0)</span>
+<a name="l00374"></a>00374 <span class="preprocessor"></span>
+<a name="l00375"></a>00375 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00376"></a>00376 <span class="preprocessor"></span>
+<a name="l00380"></a>00380 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00381"></a>00381     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
+<a name="l00382"></a>00382     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
+<a name="l00383"></a>00383     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
+<a name="l00384"></a>00384     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
+<a name="l00385"></a>00385     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
+<a name="l00386"></a>00386     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
+<a name="l00387"></a>00387 } rs_allocation_cubemap_face;
+<a name="l00388"></a>00388 
+<a name="l00395"></a>00395 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00396"></a>00396     RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
+<a name="l00397"></a>00397     RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
+<a name="l00398"></a>00398     RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
+<a name="l00399"></a>00399     RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
+<a name="l00400"></a>00400     RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010
+<a name="l00401"></a>00401 } rs_allocation_usage_type;
+<a name="l00402"></a>00402 
+<a name="l00403"></a>00403 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00404"></a>00404 <span class="preprocessor"></span>
+<a name="l00405"></a>00405 <span class="comment">// New API&#39;s</span>
+<a name="l00406"></a>00406 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00407"></a>00407 <span class="preprocessor"></span>
+<a name="l00412"></a>00412 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00416"></a>00416     RS_PRIMITIVE_POINT              = 0,
+<a name="l00420"></a>00420     RS_PRIMITIVE_LINE               = 1,
+<a name="l00424"></a>00424     RS_PRIMITIVE_LINE_STRIP         = 2,
+<a name="l00428"></a>00428     RS_PRIMITIVE_TRIANGLE           = 3,
+<a name="l00434"></a>00434     RS_PRIMITIVE_TRIANGLE_STRIP     = 4,
+<a name="l00439"></a>00439     RS_PRIMITIVE_TRIANGLE_FAN       = 5,
+<a name="l00440"></a>00440 
+<a name="l00444"></a>00444     RS_PRIMITIVE_INVALID            = 100,
+<a name="l00445"></a>00445 } rs_primitive;
+<a name="l00446"></a>00446 
+<a name="l00465"></a>00465 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00466"></a>00466     RS_TYPE_NONE             = 0,
+<a name="l00467"></a>00467     RS_TYPE_FLOAT_32         = 2,
+<a name="l00468"></a>00468     RS_TYPE_FLOAT_64         = 3,
+<a name="l00469"></a>00469     RS_TYPE_SIGNED_8         = 4,
+<a name="l00470"></a>00470     RS_TYPE_SIGNED_16        = 5,
+<a name="l00471"></a>00471     RS_TYPE_SIGNED_32        = 6,
+<a name="l00472"></a>00472     RS_TYPE_SIGNED_64        = 7,
+<a name="l00473"></a>00473     RS_TYPE_UNSIGNED_8       = 8,
+<a name="l00474"></a>00474     RS_TYPE_UNSIGNED_16      = 9,
+<a name="l00475"></a>00475     RS_TYPE_UNSIGNED_32      = 10,
+<a name="l00476"></a>00476     RS_TYPE_UNSIGNED_64      = 11,
+<a name="l00477"></a>00477 
+<a name="l00478"></a>00478     RS_TYPE_BOOLEAN          = 12,
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480     RS_TYPE_UNSIGNED_5_6_5   = 13,
+<a name="l00481"></a>00481     RS_TYPE_UNSIGNED_5_5_5_1 = 14,
+<a name="l00482"></a>00482     RS_TYPE_UNSIGNED_4_4_4_4 = 15,
+<a name="l00483"></a>00483 
+<a name="l00484"></a>00484     RS_TYPE_MATRIX_4X4       = 16,
+<a name="l00485"></a>00485     RS_TYPE_MATRIX_3X3       = 17,
+<a name="l00486"></a>00486     RS_TYPE_MATRIX_2X2       = 18,
+<a name="l00487"></a>00487 
+<a name="l00488"></a>00488     RS_TYPE_ELEMENT          = 1000,
+<a name="l00489"></a>00489     RS_TYPE_TYPE             = 1001,
+<a name="l00490"></a>00490     RS_TYPE_ALLOCATION       = 1002,
+<a name="l00491"></a>00491     RS_TYPE_SAMPLER          = 1003,
+<a name="l00492"></a>00492     RS_TYPE_SCRIPT           = 1004,
+<a name="l00493"></a>00493     RS_TYPE_MESH             = 1005,
+<a name="l00494"></a>00494     RS_TYPE_PROGRAM_FRAGMENT = 1006,
+<a name="l00495"></a>00495     RS_TYPE_PROGRAM_VERTEX   = 1007,
+<a name="l00496"></a>00496     RS_TYPE_PROGRAM_RASTER   = 1008,
+<a name="l00497"></a>00497     RS_TYPE_PROGRAM_STORE    = 1009,
+<a name="l00498"></a>00498     RS_TYPE_FONT             = 1010,
+<a name="l00499"></a>00499 
+<a name="l00500"></a>00500     RS_TYPE_INVALID          = 10000,
+<a name="l00501"></a>00501 } rs_data_type;
+<a name="l00502"></a>00502 
+<a name="l00511"></a>00511 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00512"></a>00512     RS_KIND_USER         = 0,
+<a name="l00513"></a>00513 
+<a name="l00514"></a>00514     RS_KIND_PIXEL_L      = 7,
+<a name="l00515"></a>00515     RS_KIND_PIXEL_A      = 8,
+<a name="l00516"></a>00516     RS_KIND_PIXEL_LA     = 9,
+<a name="l00517"></a>00517     RS_KIND_PIXEL_RGB    = 10,
+<a name="l00518"></a>00518     RS_KIND_PIXEL_RGBA   = 11,
+<a name="l00519"></a>00519     RS_KIND_PIXEL_DEPTH  = 12,
+<a name="l00520"></a>00520 
+<a name="l00521"></a>00521     RS_KIND_INVALID      = 100,
+<a name="l00522"></a>00522 } rs_data_kind;
+<a name="l00523"></a>00523 
+<a name="l00524"></a>00524 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00528"></a>00528     RS_DEPTH_FUNC_ALWAYS        = 0,
+<a name="l00533"></a>00533     RS_DEPTH_FUNC_LESS          = 1,
+<a name="l00538"></a>00538     RS_DEPTH_FUNC_LEQUAL        = 2,
+<a name="l00543"></a>00543     RS_DEPTH_FUNC_GREATER       = 3,
+<a name="l00548"></a>00548     RS_DEPTH_FUNC_GEQUAL        = 4,
+<a name="l00553"></a>00553     RS_DEPTH_FUNC_EQUAL         = 5,
+<a name="l00558"></a>00558     RS_DEPTH_FUNC_NOTEQUAL      = 6,
+<a name="l00562"></a>00562     RS_DEPTH_FUNC_INVALID       = 100,
+<a name="l00563"></a>00563 } rs_depth_func;
+<a name="l00564"></a>00564 
+<a name="l00565"></a>00565 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00566"></a>00566     RS_BLEND_SRC_ZERO                   = 0,
+<a name="l00567"></a>00567     RS_BLEND_SRC_ONE                    = 1,
+<a name="l00568"></a>00568     RS_BLEND_SRC_DST_COLOR              = 2,
+<a name="l00569"></a>00569     RS_BLEND_SRC_ONE_MINUS_DST_COLOR    = 3,
+<a name="l00570"></a>00570     RS_BLEND_SRC_SRC_ALPHA              = 4,
+<a name="l00571"></a>00571     RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA    = 5,
+<a name="l00572"></a>00572     RS_BLEND_SRC_DST_ALPHA              = 6,
+<a name="l00573"></a>00573     RS_BLEND_SRC_ONE_MINUS_DST_ALPHA    = 7,
+<a name="l00574"></a>00574     RS_BLEND_SRC_SRC_ALPHA_SATURATE     = 8,
+<a name="l00575"></a>00575 
+<a name="l00576"></a>00576     RS_BLEND_SRC_INVALID                = 100,
+<a name="l00577"></a>00577 } rs_blend_src_func;
+<a name="l00578"></a>00578 
+<a name="l00579"></a>00579 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00580"></a>00580     RS_BLEND_DST_ZERO                   = 0,
+<a name="l00581"></a>00581     RS_BLEND_DST_ONE                    = 1,
+<a name="l00582"></a>00582     RS_BLEND_DST_SRC_COLOR              = 2,
+<a name="l00583"></a>00583     RS_BLEND_DST_ONE_MINUS_SRC_COLOR    = 3,
+<a name="l00584"></a>00584     RS_BLEND_DST_SRC_ALPHA              = 4,
+<a name="l00585"></a>00585     RS_BLEND_DST_ONE_MINUS_SRC_ALPHA    = 5,
+<a name="l00586"></a>00586     RS_BLEND_DST_DST_ALPHA              = 6,
+<a name="l00587"></a>00587     RS_BLEND_DST_ONE_MINUS_DST_ALPHA    = 7,
+<a name="l00588"></a>00588 
+<a name="l00589"></a>00589     RS_BLEND_DST_INVALID                = 100,
+<a name="l00590"></a>00590 } rs_blend_dst_func;
+<a name="l00591"></a>00591 
+<a name="l00592"></a>00592 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00593"></a>00593     RS_CULL_BACK     = 0,
+<a name="l00594"></a>00594     RS_CULL_FRONT    = 1,
+<a name="l00595"></a>00595     RS_CULL_NONE     = 2,
+<a name="l00596"></a>00596 
+<a name="l00597"></a>00597     RS_CULL_INVALID  = 100,
+<a name="l00598"></a>00598 } rs_cull_mode;
+<a name="l00599"></a>00599 
+<a name="l00600"></a>00600 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00601"></a>00601     RS_SAMPLER_NEAREST              = 0,
+<a name="l00602"></a>00602     RS_SAMPLER_LINEAR               = 1,
+<a name="l00603"></a>00603     RS_SAMPLER_LINEAR_MIP_LINEAR    = 2,
+<a name="l00604"></a>00604     RS_SAMPLER_WRAP                 = 3,
+<a name="l00605"></a>00605     RS_SAMPLER_CLAMP                = 4,
+<a name="l00606"></a>00606     RS_SAMPLER_LINEAR_MIP_NEAREST   = 5,
+<a name="l00607"></a>00607 
+<a name="l00608"></a>00608     RS_SAMPLER_INVALID              = 100,
+<a name="l00609"></a>00609 } rs_sampler_value;
+<a name="l00610"></a>00610 
+<a name="l00611"></a>00611 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
+<a name="l00612"></a>00612 <span class="preprocessor"></span>
+<a name="l00613"></a>00613 <span class="preprocessor">#endif // __RS_TYPES_RSH__</span>
 </pre></div></div>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__allocation.html b/docs/html/reference/renderscript/structrs__allocation.html
index b166fdd..ba6d973 100644
--- a/docs/html/reference/renderscript/structrs__allocation.html
+++ b/docs/html/reference/renderscript/structrs__allocation.html
@@ -37,7 +37,7 @@
 
 <p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00121">121</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__element.html b/docs/html/reference/renderscript/structrs__element.html
index 79cd090..e380378 100644
--- a/docs/html/reference/renderscript/structrs__element.html
+++ b/docs/html/reference/renderscript/structrs__element.html
@@ -37,7 +37,7 @@
 
 <p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00109">109</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__font.html b/docs/html/reference/renderscript/structrs__font.html
index 83eb649..4d5cd9e 100644
--- a/docs/html/reference/renderscript/structrs__font.html
+++ b/docs/html/reference/renderscript/structrs__font.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>Opaque handle to a Renderscript font object. </p>
 <p>See: android.renderscript.Font </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00169">169</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00175">175</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__matrix2x2.html b/docs/html/reference/renderscript/structrs__matrix2x2.html
index 8789066d..5d08900 100644
--- a/docs/html/reference/renderscript/structrs__matrix2x2.html
+++ b/docs/html/reference/renderscript/structrs__matrix2x2.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>2x2 float matrix </p>
 <p>Native holder for RS matrix. Elements are stored in the array at the location [row*2 + col] </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00357">357</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00363">363</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__matrix3x3.html b/docs/html/reference/renderscript/structrs__matrix3x3.html
index 2b036df..f63ffe8 100644
--- a/docs/html/reference/renderscript/structrs__matrix3x3.html
+++ b/docs/html/reference/renderscript/structrs__matrix3x3.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>3x3 float matrix </p>
 <p>Native holder for RS matrix. Elements are stored in the array at the location [row*3 + col] </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00348">348</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00354">354</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__matrix4x4.html b/docs/html/reference/renderscript/structrs__matrix4x4.html
index c696108..1a10edf 100644
--- a/docs/html/reference/renderscript/structrs__matrix4x4.html
+++ b/docs/html/reference/renderscript/structrs__matrix4x4.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>4x4 float matrix </p>
 <p>Native holder for RS matrix. Elements are stored in the array at the location [row*4 + col] </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00339">339</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00345">345</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__mesh.html b/docs/html/reference/renderscript/structrs__mesh.html
index 6f58a54..2a49a6a 100644
--- a/docs/html/reference/renderscript/structrs__mesh.html
+++ b/docs/html/reference/renderscript/structrs__mesh.html
@@ -37,7 +37,7 @@
 
 <p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00139">139</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__path.html b/docs/html/reference/renderscript/structrs__path.html
new file mode 100644
index 0000000..2ec823d
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__path.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_path Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_path Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_path" -->
+<p>Opaque handle to a Renderscript Path object.  
+ <a href="structrs__path.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript Path object. </p>
+<p>See: android.renderscript.Path </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00145">145</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__program__fragment.html b/docs/html/reference/renderscript/structrs__program__fragment.html
index ed8eae7..8c9a241 100644
--- a/docs/html/reference/renderscript/structrs__program__fragment.html
+++ b/docs/html/reference/renderscript/structrs__program__fragment.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>Opaque handle to a Renderscript ProgramFragment object. </p>
 <p>See: android.renderscript.ProgramFragment </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00145">145</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00151">151</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__program__raster.html b/docs/html/reference/renderscript/structrs__program__raster.html
index a914854..201825b 100644
--- a/docs/html/reference/renderscript/structrs__program__raster.html
+++ b/docs/html/reference/renderscript/structrs__program__raster.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>Opaque handle to a Renderscript ProgramRaster object. </p>
 <p>See: android.renderscript.ProgramRaster </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00157">157</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00163">163</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__program__store.html b/docs/html/reference/renderscript/structrs__program__store.html
index 6ecfece..800d29b 100644
--- a/docs/html/reference/renderscript/structrs__program__store.html
+++ b/docs/html/reference/renderscript/structrs__program__store.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>Opaque handle to a Renderscript ProgramStore object. </p>
 <p>See: android.renderscript.ProgramStore </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00163">163</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00169">169</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__program__vertex.html b/docs/html/reference/renderscript/structrs__program__vertex.html
index 2b145a3..9f425fe 100644
--- a/docs/html/reference/renderscript/structrs__program__vertex.html
+++ b/docs/html/reference/renderscript/structrs__program__vertex.html
@@ -35,9 +35,9 @@
 <div class="textblock"><p>Opaque handle to a Renderscript ProgramVertex object. </p>
 <p>See: android.renderscript.ProgramVertex </p>
 
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00151">151</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00157">157</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__sampler.html b/docs/html/reference/renderscript/structrs__sampler.html
index 58ea0de..9f48abc 100644
--- a/docs/html/reference/renderscript/structrs__sampler.html
+++ b/docs/html/reference/renderscript/structrs__sampler.html
@@ -37,7 +37,7 @@
 
 <p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00127">127</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__script.html b/docs/html/reference/renderscript/structrs__script.html
index 0946635..8294378 100644
--- a/docs/html/reference/renderscript/structrs__script.html
+++ b/docs/html/reference/renderscript/structrs__script.html
@@ -37,7 +37,7 @@
 
 <p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00133">133</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__script__call.html b/docs/html/reference/renderscript/structrs__script__call.html
index 9ba0681..83432e5 100644
--- a/docs/html/reference/renderscript/structrs__script__call.html
+++ b/docs/html/reference/renderscript/structrs__script__call.html
@@ -31,9 +31,9 @@
 <!-- doxytag: class="rs_script_call" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Structure to provide extra information to a rsForEach call. Primarly used to restrict the call to a subset of cells in the allocation. </p>
 
-<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00088">88</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
+<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00106">106</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a></li>
+<li><a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__tm.html b/docs/html/reference/renderscript/structrs__tm.html
index 80f8fe9..8148dcb 100644
--- a/docs/html/reference/renderscript/structrs__tm.html
+++ b/docs/html/reference/renderscript/structrs__tm.html
@@ -67,7 +67,7 @@
 
 <p>Definition at line <a class="el" href="rs__time_8rsh_source.html#l00049">49</a> of file <a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a></li>
+<li><a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/reference/renderscript/structrs__type.html b/docs/html/reference/renderscript/structrs__type.html
index f8eec3e..7d97fb9 100644
--- a/docs/html/reference/renderscript/structrs__type.html
+++ b/docs/html/reference/renderscript/structrs__type.html
@@ -37,7 +37,7 @@
 
 <p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00115">115</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+<li><a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
 </ul>
 </div>
 
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index e788ffe..a20d0b1 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -2,21 +2,21 @@
 header.hide=1
 page.metaDescription=Download the official Android SDK to develop apps for Android-powered devices.
 
-sdk.win_installer=installer_r18-windows.exe
-sdk.win_installer_bytes=37456234
-sdk.win_installer_checksum=48b1fe7b431afe6b9c8a992bf75dd898
+sdk.win_installer=installer_r20-windows.exe
+sdk.win_installer_bytes=70497095
+sdk.win_installer_checksum=0f25321554e2f88b247320d6a3bc1a7a
 
-sdk.win_download=android-sdk_r18-windows.zip
-sdk.win_bytes=37448775
-sdk.win_checksum=bfbfdf8b2d0fdecc2a621544d706fa98
+sdk.win_download=android-sdk_r20-windows.zip
+sdk.win_bytes=90353014
+sdk.win_checksum=b62b0f80f559c0ac670e9f058a21f0df
 
-sdk.mac_download=android-sdk_r18-macosx.zip
-sdk.mac_bytes=33903758
-sdk.mac_checksum=8328e8a5531c9d6f6f1a0261cb97af36
+sdk.mac_download=android-sdk_r20-macosx.zip
+sdk.mac_bytes=58203018
+sdk.mac_checksum=b6b6035ccec55ec2aa057438eb1db1f4
 
-sdk.linux_download=android-sdk_r18-linux.tgz
-sdk.linux_bytes=29731463
-sdk.linux_checksum=6cd716d0e04624b865ffed3c25b3485c
+sdk.linux_download=android-sdk_r20-linux.tgz
+sdk.linux_bytes=82589455
+sdk.linux_checksum=22a81cf1d4a951c62f71a8758290e9bb
 
 @jd:body
 
diff --git a/docs/html/sdk/installing/installing-adt.jd b/docs/html/sdk/installing/installing-adt.jd
index 2925272..0e53e75 100644
--- a/docs/html/sdk/installing/installing-adt.jd
+++ b/docs/html/sdk/installing/installing-adt.jd
@@ -1,9 +1,9 @@
 page.title=Installing the Eclipse Plugin
 walkthru=1
-adt.zip.version=18.0.0
-adt.zip.download=ADT-18.0.0.zip
-adt.zip.bytes=12834793
-adt.zip.checksum=b446fa157ed97af79d1e21629201efbb
+adt.zip.version=20.0.0
+adt.zip.download=ADT-20.0.0.zip
+adt.zip.bytes=12387628
+adt.zip.checksum=ea0fc934af3b6b89097f0146c7822ed0
 
 @jd:body
 
diff --git a/docs/html/shareables/training/CustomView.zip b/docs/html/shareables/training/CustomView.zip
index f8c1c7a..d7ae8a2 100644
--- a/docs/html/shareables/training/CustomView.zip
+++ b/docs/html/shareables/training/CustomView.zip
Binary files differ
diff --git a/docs/html/guide/topics/connectivity/usb/adk.jd b/docs/html/tools/adk/adk.jd
similarity index 72%
rename from docs/html/guide/topics/connectivity/usb/adk.jd
rename to docs/html/tools/adk/adk.jd
index 034728c..2a0c717 100644
--- a/docs/html/guide/topics/connectivity/usb/adk.jd
+++ b/docs/html/tools/adk/adk.jd
@@ -1,4 +1,4 @@
-page.title=Android Open Accessory Development Kit
+page.title=Accessory Development Kit 2011 Guide
 @jd:body
 
   <div id="qv-wrapper">
@@ -24,21 +24,6 @@
         </li>
 
         <li>
-          <a href="#accessory-protocol">Implementing the Android Accessory Protocol</a>
-
-          <ol>
-            <li><a href="#wait">Wait for and detect connected devices</a></li>
-
-            <li><a href="#determine">Determine the connected device's accessory mode
-            support</a></li>
-
-            <li><a href="#start">Attempt to start the device in accessory mode</a></li>
-
-            <li><a href="#establish">Establish communication with the device</a></li>
-          </ol>
-        </li>
-
-        <li>
           <a href="#firmware">How the ADK board implements the Android Accessory Protocol</a>
 
           <ol>
@@ -66,72 +51,26 @@
         <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory Dev Guide</a></li>
       </ol>
 
-      <h2>Where to buy</h2>
-
-      <ol>
-
-      <li><a href="http://store.arduino.cc/">
-        Arduino Store</a></li>
-
-      <li><a href="https://store.diydrones.com/ProductDetails.asp?ProductCode=BR-PhoneDrone">
-        DIY Drones</a></li>
-
-      <li><a href=
-        "http://mbed.org/order/">
-        mbed</a></li>
-
-      <li><a href=
-        "http://www.microchip.com/android">
-        Microchip</a></li>
-
-      <li><a href="http://shop.moderndevice.com/products/freeduino-usb-host-board">
-        Modern Device</a></li>
-
-      <li><a href=
-        "http://www.rt-net.jp/shop/index.php?main_page=product_info&cPath=3_4&products_id=1">
-        RT Corp</a></li>
-
-      <li><a href="http://www.seeedstudio.com/depot/seeeduino-adk-main-board-p-846.html">
-        Seeed Studio</a></li>
-
-      <li><a href="http://www.sparkfun.com/products/10748">
-        SparkFun</a></li>
-
-      <li><a href="http://troido.de/de/shoplsmallgbuy-android-stufflsmallg">
-        Troido</a></li>
-
-      </ol>
     </div>
   </div>
 
-  <p>The Android 3.1 platform (also backported to Android 2.3.4) introduces Android Open Accessory
-  support, which allows external USB hardware (an Android USB accessory) to interact with an
-  Android-powered device in a special "accessory" mode. When an Android-powered powered device is
-  in accessory mode, the connected accessory acts as the USB host (powers the bus and enumerates
-  devices) and the Android-powered device acts as the USB device. Android USB accessories are
-  specifically designed to attach to Android-powered devices and adhere to a simple protocol
-  (Android accessory protocol) that allows them to detect Android-powered devices that support
-  accessory mode. Accessories must also provide 500mA at 5V for charging power. Many previously
-  released Android-powered devices are only capable of acting as a USB device and cannot initiate
-  connections with external USB devices. Android Open Accessory support overcomes this limitation
-  and allows you to build accessories that can interact with an assortment of Android-powered
-  devices by allowing the accessory to initiate the connection.</p>
+  <p>The Android Open Accessory Development Kit (ADK) is a reference implementation of an Android
+  Open Accessory, based on the <a href="http://www.arduino.cc/">Arduino open source electronics
+  prototyping platform</a>. The accessory's hardware design files, code that implements the
+  accessory's firmware, and the Android application that interacts with the accessory are provided
+  as part of the kit to help hardware builders and software developers get started building their
+  own accessories. The hardware design files and firmware code are contained in the <a href=
+  "https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK package download</a>.</p>
 
-  <p class="note"><strong>Note:</strong> Accessory mode is ultimately dependent on the device's
-  hardware and not all devices will support accessory mode. Devices that support accessory mode can
-  be filtered using a <code>&lt;uses-feature&gt;</code> element in your corresponding application's
-  Android manifest. For more information, see the <a href=
-  "{@docRoot}guide/topics/connectivity/usb/accessory.html#manifest">USB Accessory</a> Developer Guide.</p>
-
-  <p>The following list of distributers are currently producing Android Open Accessory compatible
-  development boards:</p>
+  <p>A limited number of kits were produced and distributed at the Google I/O 2011 developer
+  conference. However, many hardware builders have reproduced and enhanced the original design and
+  these boards are available for purchase. The following list of distributors are currently
+  producing Android Open Accessory compatible development boards:</p>
 
   <ul>
-
-    <li>The <a href="http://store.arduino.cc/">Arduino Store</a> provides the Arduino Mega ADK
-    (in <a href="http://store.arduino.cc/eu/index.php?main_page=product_info&cPath=11_12&products_id=144">EU nations</a>
-    or <a href="http://store.arduino.cc/ww/index.php?main_page=product_info&cPath=11_12&products_id=144">non-EU nations</a>)
-    that is based on the ATmega2560 and supports the ADK firmware.</li>
+    <li>The <a href="http://store.arduino.cc/">Arduino Store</a> provides the <a
+href="http://arduino.cc/en/Main/ArduinoBoardADK">Arduino Mega ADK</a> (for EU nations or non-
+    EU nations) that is based on the ATmega2560 and supports the ADK firmware.</li>
 
     <li><a href="https://store.diydrones.com/ProductDetails.asp?ProductCode=BR-PhoneDrone">DIY
     Drones</a> provides an Arduino-compatible board geared towards RC (radio controlled) and UAV
@@ -157,18 +96,16 @@
     <li><a href="http://www.sparkfun.com/products/10748">
     SparkFun</a>'s IOIO board now has beta support for the ADK firmware.</li>
 
+    <li><a href="http://troido.de/de/shoplsmallgbuy-android-stufflsmallg">Troido</a> has produced an
+    Arduino-compatible version of the ADK hardware.</li>
+
   </ul>
 
   <p>We expect more hardware distributers to create a variety of kits, so please stay tuned for
   further developments.</p>
 
   <h2 id="components">ADK Components</h2>
-  <p>The Android Open Accessory Development Kit (ADK) provides an implementation of an Android USB
-  accessory that is based on the <a href="http://www.arduino.cc/">Arduino open source electronics
-  prototyping platform</a>, the accessory's hardware design files, code that implements the
-  accessory's firmware, and the Android application that interacts with the accessory. The hardware
-  design files and firmware code are contained in the <a href=
-  "https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK package download</a>.</p>
+
   <p>The main hardware and software components of the ADK include:</p>
 
   <ul>
@@ -421,145 +358,6 @@
   accessories communicate with Android-powered devices describe much of what you should be doing in
   your own accessory.</p>
 
-  <h2 id="accessory-protocol">Implementing the Android Accessory Protocol</h2>
-
-  <p>An Android USB accessory must adhere to Android Accessory Protocol, which defines how
-  an accessory detects and sets up communication with an Android-powered device. In general, an
-  accessory should carry out the following steps:</p>
-
-  <ol>
-    <li>Wait for and detect connected devices</li>
-
-    <li>Determine the device's accessory mode support</li>
-
-    <li>Attempt to start the device in accessory mode if needed</li>
-
-    <li>Establish communication with the device if it supports the Android accessory protocol</li>
-  </ol>
-
-  <p>The following sections go into depth about how to implement these steps.</p>
-
-  <h3 id="wait">Wait for and detect connected devices</h3>
-
-  <p>Your accessory should have logic to continuously check
-  for connected Android-powered devices. When a device is connected, your accessory should
-  determine if the device supports accessory mode.</p>
-
-  <h3 id="determine">Determine the device's accessory mode support</h3>
-
-
-  <p>When an Android-powered device is connected, it can be in one of three states:</p>
-
-  <ol type="a">
-    <li>The attached device supports Android accessory mode and is already in accessory mode.</li>
-
-    <li>The attached device supports Android accessory mode, but it is not in accessory mode.</li>
-
-    <li>The attached device does not support Android accessory mode.</li>
-  </ol>
-
-  <p>During the initial connection, the accessory should check the vendor and product IDs of the
-  connected device's USB device descriptor. The vendor ID should match Google's ID (0x18D1) and the
-  product ID should be 0x2D00 or 0x2D01 if the device is already in accessory mode (case A). If so,
-  the accessory can now <a href="#establish">establish communication with the device</a> through
-  bulk transfer endpoints with its own communication protocol. There is no need to start the device
-  in accessory mode.</p>
-
-  <p class="note"><strong>Note:</strong> 0x2D00 is reserved for Android-powered devices that
-  support accessory mode. 0x2D01 is reserved for devices that support accessory mode as well as the
-  ADB (Android Debug Bridge) protocol, which exposes a second interface with two bulk endpoints for
-  ADB. You can use these endpoints for debugging the accessory application if you are simulating
-  the accessory on a computer. In general, do not use this interface unless your accessory is
-  implementing a passthrough to ADB on the device.</p>
-
-  <p>If the vendor and product ID do not match, there is no way to distinguish between states b and
-  c, so the accessory <a href="#start">attempts to start the device in accessory mode</a> to figure
-  out if the device is supported.</p>
-
-  <h3 id="start">Attempt to start the device in accessory mode</h3>
-
-  <p>If the vendor and product IDs do not correspond to an Android-powered device in accessory
-  mode, the accessory cannot discern whether the device supports accessory mode and is not in that
-  state, or if the device does not support accessory mode at all. This is because devices that
-  support accessory mode but aren't in it initially report the device's manufacturer vendor ID and
-  product ID, and not the special Android Open Accessory ones. In either case, the accessory should try to start
-  the device into accessory mode to figure out if the device supports it. The following steps
-  explain how to do this:</p>
-
-  <ol>
-    <li>Send a 51 control request ("Get Protocol") to figure out if the device supports the Android
-    accessory protocol. A non-zero number is returned if the protocol is supported, which
-    represents the version of the protocol that the device supports (currently, only version 1
-    exists). This request is a control request on endpoint 0 with the following characteristics:
-      <pre>
-requestType:    USB_DIR_IN | USB_TYPE_VENDOR
-request:        51
-value:          0
-index:          0
-data:           protocol version number (16 bits little endian sent from the device to the accessory)
-</pre>
-    </li>
-
-    <li>If the device returns a proper protocol version, send identifying string information to the
-    device. This information allows the device to figure out an appropriate application for this
-    accessory and also present the user with a URL if an appropriate application does not exist.
-    These requests are control requests on endpoint 0 (for each string ID) with the following
-    characteristics:
-      <pre>
-requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
-request:        52
-value:          0
-index:          string ID
-data            zero terminated UTF8 string sent from accessory to device
-</pre>
-
-      <p>The following string IDs are supported, with a maximum size of 256 bytes for each string
-      (must be zero terminated with \0).</p>
-      <pre>
-manufacturer name:  0
-model name:         1
-description:        2
-version:            3
-URI:                4
-serial number:      5
-</pre>
-    </li>
-
-    <li>When the identifying strings are sent, request the device start up in accessory mode. This
-    request is a control request on endpoint 0 with the following characteristics:
-      <pre>
-requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
-request:        53
-value:          0
-index:          0
-data:           none
-</pre>
-    </li>
-  </ol>
-
-  <p>After sending the final control request, the connected USB device should re-introduce itself
-  on the bus in accessory mode and the accessory can re-enumerate the connected devices. The
-  algorithm jumps back to <a href="#determine">determining the device's accessory mode support</a>
-  to check for the vendor and product ID. The vendor ID and product ID of the device will be
-  different if the device successfully switched to accessory mode and will now correspond to
-  Google's vendor and product IDs instead of the device manufacturer's IDs. The accessory can now
-  <a href="#establish">establish communication with the device</a>.</p>
-
-  <p>If at any point these steps fail, the device does not support Android accessory mode and the
-  accessory should wait for the next device to be connected.</p>
-
-  <h3 id="establish">Establish communication with the device</h3>
-
-  <p>If an Android-powered device in accessory mode is detected, the accessory can query the
-  device's interface and endpoint descriptors to obtain the bulk endpoints to communicate with the
-  device. An Android-powered device that has a product ID of 0x2D00 has one interface with two bulk
-  endpoints for input and output communication. A device with product ID of 0x2D01 has two
-  interfaces with two bulk endpoints each for input and output communication. The first interface
-  is for standard communication while the second interface is for ADB communication. To communicate
-  on an interface, all you need to do is find the first bulk input and output endpoints, set the
-  device's configuration to a value of 1 with a SET_CONFIGURATION (0x09) device request, then
-  communicate using the endpoints.</p>
-
   <h2 id="firmware">How the ADK board implements the Android Accessory protocol</h2>
 
   <p>If you have access to the ADK board and shield, the following sections describe the firmware
@@ -667,8 +465,10 @@
   <p>If the device is not already in accessory mode, then the ADK board must determine whether or
   not it supports it by sending control request 51 to check the version of the USB accessory
   protocol that the device supports (see <code>AndroidAccessory::getProtocol()</code>). Protocol
-  version 1 is the only version for now, but this can be an integer greater than zero in the
-  future. If the appropriate protocol version is returned, the board sends control request 52 (one
+  version 1 is supported by Android 2.3.4 (API Level 10) and higher. Protocol version 2 is
+  supported by Android 4.1 (API Level 16) and higher. Versions greater than 2 may supported in
+  the future.
+  If the appropriate protocol version is returned, the board sends control request 52 (one
   for each string with <code>AndroidAcessory:sendString()</code>) to send it's identifying
   information, and tries to start the device in accessory mode with control request 53. The
   <code>AndroidAccessory::switchDevice()</code> method takes care of this:</p>
@@ -676,7 +476,7 @@
 bool AndroidAccessory::switchDevice(byte addr)
 {
     int protocol = getProtocol(addr);
-    if (protocol == 1) {
+    if (protocol >= 1) {
         Serial.print("device supports protocol 1\n");
     } else {
         Serial.print("could not read device protocol version\n");
diff --git a/docs/html/tools/adk/adk2.jd b/docs/html/tools/adk/adk2.jd
new file mode 100644
index 0000000..d3fed30
--- /dev/null
+++ b/docs/html/tools/adk/adk2.jd
@@ -0,0 +1,617 @@
+page.title=Accessory Development Kit 2012 Guide
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#components">Components</a></li>
+      <li><a href="#clock">Using the Alarm Clock</a></li>
+      <li><a href="#play-audio">Playing Audio</a></li>
+      <li><a href="#dev">Developing Accessories with ADK 2012</a>
+        <ol>
+          <li><a href="#src-download">Downloading the ADK Source</a></li>
+          <li><a href="#dev-setup">Setting Up the Development Environment</a></li>
+          <li><a href="#alt-build">Using the ADK Alternative Build System</a></li>
+        </ol>
+      </li>
+      <li><a href="#adk-conn">How the ADK Connects with Android Devices</a>
+        <ol>
+          <li><a href="#adk-conn-bt">ADK Connection over Bluetooth</a></li>
+          <li><a href="#adk-conn-usb">ADK Connection over USB</a></li>
+        </ol>
+      </li>
+      <li><a href="#audio-dock">USB Audio Dock Implementation</a></li>
+    </ol>
+
+    <h2>See also</h2>
+    <ol>
+      <li><a href="aoa.html">Android Open Accessory Protocol</a></li>
+      <li><a href="aoa2.html">Android Open Accessory Protocol 2.0</a></li>
+      <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory Dev
+      Guide</a></li>
+    </ol>
+  </div>
+</div>
+
+<p>The Android Accessory Development Kit (ADK) for 2012 is the latest reference implementation of
+an <a href="aoa.html">Android Open Accessory</a> device, designed to help Android hardware accessory
+builders and software developers create accessories for Android. The ADK 2012 is based on the <a
+href="http://arduino.cc">Arduino</a> open source electronics prototyping platform, with some
+hardware and software extensions that allow it to communicate with Android devices.</p>
+
+<p>A limited number of these kits were produced and distributed at the Google I/O 2012 developer
+conference. If you did not receive one of these kits, fear not! The specifications and design files
+for the hardware were also released for use by manufacturers and hobbyists. You should expect to see
+kits with similar features available for purchase, or you can build one yourself!</p>
+
+<p>One of the important new features demonstrated by this ADK is the ability to play audio over a
+USB connection. Be sure to check out the <a href="#audio-dock">reference implementation</a> of a USB
+audio dock in this ADK if you are interested in making audio-related USB accessories for
+Android.</p>
+
+<h2 id="components">Components</h2>
+
+<p>The ADK 2012 is based on the Arduino open source electronics prototyping platform and is an open
+hardware design. The hardware design files and firmware source code are included with the ADK
+software download. The ADK contains two main physical hardware components:</p>
+
+<ol>
+  <li>Main processing board containing the microprocessor, USB connections, power connector and
+input/output pins. This board can be removed and used separately from the rest of the hardware.</li>
+  <li>Shield containing sensors, LEDs, input controls, audio amplifier and speaker output, contained
+in a custom, polygon box enclosure.</li>
+</ol>
+
+<p>The main hardware features of the ADK are as follows:</p>
+
+<ul>
+  <li>An ARM 32-bit Cortex M3 micro-processor</li>
+  <li>Separate USB connections for an Android device and computer connection for programming and
+debugging</li>
+  <li>Sensors for light, color, proximity, temperature, humidity, barometric pressure, and
+acceleration</li>
+  <li>Micro SD Card slot</li>
+  <li>Bluetooth support</li>
+</ul>
+
+<p>The ADK comes preloaded with an alarm clock firmware program that you can use immediately. A
+companion Android application, <a
+href="https://play.google.com/store/apps/details?id=com.google.android.apps.adk2">ADK 2012</a>, is
+available on Google Play. The source code for both the Android application and the ADK firmware (an
+Arduino sketch) can be downloaded from this page.</p>
+
+<p>The ADK 2012 also comes with additional parts to help you develop accessories with it,
+including:</p>
+
+<ul>
+  <li>AC power adapter</li>
+  <li>USB A to Micro USB B connector cable</li>
+  <li>Micro USB B to Micro USB AB connector (small, rectangular plug)</li>
+  <li>Micro SD Card, preinstalled in the ADK SD Card socket</li>
+</ul>
+
+<h2 id="clock">Using the Alarm Clock</h2>
+
+<p>An alarm clock program comes preloaded on the ADK. This firmware program allows you to use the
+ADK as an alarm clock.</p>
+
+<p>To use the ADK as an alarm clock:</p>
+
+<ol>
+  <li>Open up the ADK by gently squeezing the two widest faces of the enclosure.</li>
+  <li>Attach the provided AC power adapter (round connector) to the main ADK board, or attach a USB
+cable to the port marked <strong>Computer</strong> and a USB port on your computer.</li>
+  <li>Place and hold your fingertip over the clock symbol on the control face.
+    <p class="note"><strong>Note:</strong> You may need to hold your finger in place for 1-2
+seconds.</p>
+  </li>
+  <li>Use the plus (+) and minus (-) symbols inside the clock digits to set the correct time.</li>
+  <li>Place your fingertip over the alarm clock symbol to activate alarm setting.</li>
+  <li>Use the plus (+) and minus (-) symbols inside the clock digits to set the alarm time.</li>
+  <li>Use the plus (+) and minus (-) symbols inside the last two clock digits to turn the alarm on
+({@code on}) or off ({@code oF}).</li>
+  <li>To set the alarm tone, place and hold your fingertip over the alarm clock symbol, then tap the
+slider control on top of the enclosure.</li>
+</ol>
+
+<p>To use the <strong>ADK 2012</strong> companion application for the alarm clock:</p>
+
+<ol>
+  <li>Load the companion application on your Android device running Android 3.1 (API Level 12) or
+higher:
+    <ul>
+      <li>Using an NFC-enabled Android device, unlock and hold the device against the left side of
+the ADK enclosure. Follow the prompts to install the app.
+      <br>- or -</li>
+      <li>Start Google Play on your device, search for the <strong>ADK 2012</strong> application and
+install it. If you cannot find the app, your device is not compatible. Try installing on another
+device.</li>
+    </ul>
+  </li>
+  <li>Connect your Android device to the ADK using one of the following methods:
+    <ul>
+      <li id="conn-bt">To connect using Bluetooth:
+        <ol>
+          <li>Plug the AC power adapter into the ADK.</li>
+          <li>On your Android device, turn Bluetooth On (<strong>Settings >
+Bluetooth</strong>).</li>
+          <li>In the <strong>Settings</strong> page, press the <strong>Bluetooth</strong> option to
+view paired devices.</li>
+          <li>Select <strong>Search for Devices</strong> to locate the ADK 2012 accessory and follow
+the on screen instructions to connect.</li>
+          <li>After pairing is complete, start the <strong>ADK 2012</strong> app on your Android
+device.</li>
+          <li>On the start screen, select the <strong>Use Bluetooth</strong> button.</li>
+          <li>In the list of paired devices, select the <strong>ADK 2012</strong> device.</li>
+          <li>The <strong>ADK 2012</strong> app should switch to the menu screen and you can start
+interacting with the ADK accessory.</li>
+        </ol>
+      </li>
+
+      <li id="conn-usb">To connect using USB:
+        <ol>
+          <li>Plug the AC power adapter into the ADK.</li>
+          <li>Connect the Micro USB AB connector (small, rectangular plug) to the port labeled
+<strong>Phone</strong> on the ADK board.</li>
+          <li>Unlock your Android device and connect the Micro USB B connector to your device.
+            <p class="note"><strong>Note:</strong> Your device must support Android USB accessory
+mode. Devices that support this mode include Google Nexus devices.</p>
+          </li>
+          <li>On the Android device, you should see a prompt to connect to the <strong>ADK DemoKit
+2012</strong>, select <strong>OK</strong>.</li>
+          <li>The <strong>ADK 2012</strong> app should start automatically and you can start
+interacting with the ADK.</li>
+        </ol>
+      </li>
+    </ul>
+  </li>
+</ol>
+
+<p class="note"><strong>Note:</strong> When using the ADK with a USB connection to an Android
+device, make sure the AC power adapter is plugged in. A USB connection to a computer does not
+provide sufficient voltage to power both the ADK and a USB connection to a device.</p>
+
+
+<h2 id="play-audio">Playing Audio</h2>
+
+<p>The ADK 2012 comes with audio output capabilities, including an amplifier and speaker. You can
+use it to play audio from your Android device using either a Bluetooth or USB connection.</p>
+
+<p>To play audio over Bluetooth:</p>
+
+<ol>
+  <li>Follow the instructions in the <a href="#conn-bt">previous section</a> to connect your Android
+device to the ADK over Bluetooth.</li>
+  <li>On your Android device, navigate to the <strong>Settings > Bluetooth</strong> page to view the
+list of paired devices, and make sure the ADK is connected.</li>
+  <li>Select the settings icon next to the <strong>ADK 2012</strong> item.</li>
+  <li>Make sure the <strong>Media Audio</strong> option is enabled.</li>
+  <li>Navigate to an application that plays music or other audio.</li>
+  <li>Play a song or sound and listen to it on the ADK speaker!</li>
+</ol>
+
+<p>To play audio over USB, you must use a device running Android 4.1 (API Level 16) or higher:</p>
+
+<ol>
+  <li>Plug the AC power adapter into the ADK.</li>
+  <li>Connect the Micro USB AB connector (small, rectangular plug) to the Phone port on the ADK
+board.</li>
+  <li>Unlock your Android device and connect the Micro USB B connector to your device.
+    <p class="note"><strong>Note:</strong> Your device must support Android USB accessory
+mode. Devices that support this mode include Google Nexus devices.</p>
+  </li>
+  <li>On the Android device, you should see a prompt to connect to the <strong>ADK DemoKit
+2012</strong>, select <strong>Cancel</strong> and allow the ADK to connect as a media device
+only.</li>
+  <li>Navigate to an application that plays music or other audio.</li>
+  <li>Play a song or sound and listen to it on the ADK speaker!</li>
+</ol>
+
+<p class="note"><strong>Note:</strong> When using the ADK with a USB connection to an Android
+device, make sure the AC power adapter is plugged in. A USB connection to a computer does not
+provide sufficient voltage to power both the ADK and a USB connection to a device.</p>
+
+
+<h2 id="dev">Developing Accessories with ADK 2012</h2>
+
+<p>The ADK 2012 is a hardware platform and a set of software libraries for prototyping Android
+accessories. This section discusses how to set up a development environment for programming the ADK
+to make it do what you want and to test software for building your own Android accessories.</p>
+
+<h3 id="src-download">Downloading the ADK Source</h3>
+
+<p>The support software and hardware specifications for the ADK 2012 are available from the Android
+source repository. Follow the instructions below to obtain the source material for the ADK.</p>
+
+<p>To download the ADK 2012 software, source code and hardware design specifications.</p>
+
+<ol>
+  <li>Download and install <a href="http://git-scm.com/download">Git</a> for your development
+system.</li>
+  <li>Download and setup the {@code repo} tool, as described on the <a
+href="http://source.android.com/source/downloading.html#installing-repo">Android open source
+project</a> site.</li>
+  <li>In a terminal window, create a new directory for the downloaded source files, initialize and
+synchronize a local repository:
+<pre>
+$> mkdir android-accessories
+$> cd android-accessories
+$> repo -init -u https://android.googlesource.com/platform/manifest -b android-accessories
+$> repo sync
+</pre>
+  </li>
+</ol>
+
+<p>After successfully completing this process, you should have the source code and tools for
+working with the ADK 2012:</p>
+
+<ul>
+  <li>{@code adk2012/board} - Source code and hardware design files for the ADK 2012</li>
+  <li>{@code adk2012/app} - Source code for the ADK 2012 Android companion application</li>
+  <li>{@code external/ide} - Source code for the ADK 2012 Integrated Development Environment
+(IDE)</li>
+  <li>{@code external/toolchain} - The toolchain used by the ADK 2012 IDE</li>
+</ul>
+
+
+<h3 id="dev-setup">Setting Up the Development Environment</h3>
+
+<p>The ADK 2012 source code repository includes an integrated development environment (IDE) that you
+can use to develop software for and program the ADK 2012 accessory. The following instructions
+explain how to build and run the ADK 2012 IDE.</p>
+
+<p>To set up, build and run the ADK 2012 IDE:</p>
+
+<ol>
+  <li><a href="#src-download">Download</a> the ADK 2012 source code files.</li>
+  <li>Download and install the Java Development Kit 6 or higher from <a
+href="http://java.oracle.com">java.oracle.com</a>.</li>
+  <li>Download and install <a href="http://ant.apache.org/">Apache Ant</a>.</li>
+  <li>In a terminal window, navigate to {@code &lt;adk-source-download&gt;/external/ide/build}
+and execute the following command to build the ADK 2012 IDE:
+<pre>$> ant</pre>
+  </li>
+  <li>After the build successfully completes, execute the following command to run the ADK 2012
+IDE:
+<pre>$> ant run</pre></li>
+</ol>
+
+<p>After you have successfully built and run the ADK 2012 IDE, you must configure it to use the 
+ADK 2012 library.</p>
+
+<p>To configure the ADK 2012 IDE for use with the ADK libraries:</p>
+
+<ol>
+  <li>Start the ADK 2012 IDE and choose <strong>File > Preferences</strong>.</li>
+  <li>In the <strong>Preferences</strong> dialog, make a note of the <strong>Sketchbook
+location</strong> directory.</li>
+  <li>Copy the {@code &lt;adk-source-download&gt;/adk2012/board/library/ADK2} directory and its
+contents into your {@code sketchbook/libraries/} directory, so that you create a {@code
+sketchbook/libraries/ADK2} directory.</li>
+  <li>Stop and restart the <strong>ADK 2012 IDE</strong>.</li>
+  <li>In the IDE, choose <strong>File > Examples > ADK2</strong> and then choose one of the example
+sketches:
+    <ul>
+      <li><strong>clock</strong> - The sketch that is preloaded onto the ADK 2012.</li>
+      <li><strong>BluetoothScan</strong> - An example sketch demonstrating code that connects an
+accessory to an Android device over Bluetooth.</li>
+      <li><strong>usbaccessory</strong> - An example sketch demonstrating code that connects an
+accessory to an Android device through a USB cable.</li>
+    </ul>
+  </li>
+  <li>Connect a Micro USB cable from the <strong>Computer</strong> port on the ADK board to your
+development computer.</li>
+  <li>In the <strong>ADK 2012 IDE</strong>, establish a serial port connection with the ADK by
+selecting <strong>Tools > Serial Port</strong> and selecting the serial port for the ADK.</li>
+  <li>In the <strong>ADK 2012 IDE</strong>, choose the ADK by selecting<strong>Tools > Board >
+Google ADK2</strong>.</li>
+  <li>Modify an example sketch or create your own.</li>
+  <li>Upload the sketch to the ADK by choosing <strong>File > Upload</strong>. When the <strong>ADK
+2012 IDE</strong> reports <strong>Done uploading</strong>, the sketch is uploaded and the ADK is
+ready to communicate with your Android device.</li>
+</ol>
+
+<h3 id="alt-build">Using the ADK Alternative Build System</h3>
+
+<p>An alternative build and load system is also available for the ADK 2012. This system is command
+line based and intended for production environments where using an IDE environment to load software
+onto accessory hardware may be inconvenient or undesirable.</p>
+
+<p>To use the command line based build system:</p>
+<ol>
+  <li><a href="#src-download">Download</a> the ADK 2012 source code files.</li>
+  <li>Download and install the <a href="http://www.gnu.org/software/make/">make</a> tool on your
+development system.</li>
+  <li>Update your system’s PATH to include {@code
+&lt;adk-source-download&gt;/external/toolchain/bin}.</li>
+  <li>Open a terminal window, navigate to {@code
+&lt;adk-source-download&gt;/external/toolchain/app} and execute the following command:
+  <pre>$> make</pre></li>
+</ol>
+
+<h2 id="adk-conn">How the ADK Connects with Android Devices</h2>
+
+<p>The essential feature of any Android accessory is its ability to connect and communicate with an
+Android device. Creating a fast and reliable connection between your accessory and Android devices
+is the first order of business when building software for an accessory. This section describes the
+connection and communication essentials used in the ADK 2012 so that you can apply them to
+developing your own Android accessories.</p>
+
+<h3 id="adk-conn-bt">ADK Connection over Bluetooth</h3>
+
+<p>The ADK 2012 app and hardware accessory use a Bluetooth Serial Port Profile (SPP) connection to
+communicate. This connection allows two way communication between the ADK accessory and Android
+devices.</p>
+
+<p class="note"><strong>Note:</strong> The implementation of the ADK hardware allows the use of
+other profiles and multiple connections. However, the basic communication between the ADK 2012
+accessory and the Android application uses SPP.</p>
+
+<h4 id="acc-bt-code">Accessory Bluetooth Code</h4>
+
+<p>In order to enable Bluetooth communications, the {@code clock.ino} sketch for the ADK 2012
+accessory calls a {@code btStart()} method during the {@code setup()} method to enable radio
+frequency communications and start listening for Bluetooth connections:</p>
+
+<pre>
+ADK L;
+void setup() {
+ L.adkInit();
+ L.btStart();
+}
+...
+void btStart(){
+    uint8_t i, dlci;
+    int f;
+
+    L.btEnable(adkBtConnectionRequest, adkBtLinkKeyRequest, adkBtLinkKeyCreated,
+               adkBtPinRequest, NULL);
+
+    dlci = L.btRfcommReserveDlci(RFCOMM_DLCI_NEED_EVEN);
+
+    if(!dlci) dbgPrintf("BTADK: failed to allocate DLCI\n");
+    else{
+
+        //change descriptor to be valid...
+        for(i = 0, f = -1; i &lt; sizeof(sdpDescrADK); i++){
+
+            if(sdpDescrADK[i] == MAGIX){
+                if(f == -1) f = i;
+                else break;
+            }
+        }
+
+        if(i != sizeof(sdpDescrADK) || f == -1){
+
+            dbgPrintf("BTADK: failed to find a single marker in descriptor\n");
+            L.btRfcommReleaseDlci(dlci);
+            return;
+        }
+
+        sdpDescrADK[f] = dlci >> 1;
+
+        dbgPrintf("BTADK has DLCI %u\n", dlci);
+
+        L.btRfcommRegisterPort(dlci, btAdkPortOpen, btAdkPortClose, btAdkPortRx);
+        L.btSdpServiceDescriptorAdd(sdpDescrADK, sizeof(sdpDescrADK));
+    }
+}
+</pre>
+
+<p>Notice that the {@code sdpDescrADK} object contains a Universally Unique Identifier (UUID) in the
+variable {@code BT_ADK_UUID}. This identifier <em>must match</em> the device UUID provided in the
+{@link android.bluetooth.BluetoothSocket} connection request in the Android application code.</p>
+
+<p>Once Bluetooth is enabled with the code shown above, the accessory listens for connection
+requests. The ADK library handles listening and connection details, so the accessory calls
+{@code ADK::adkEventProcess()} once during each loop execution:</p>
+
+<pre>
+void loop(void)
+{
+  ...
+  L.adkEventProcess(); //let the adk framework do its thing
+  ...
+}
+</pre>
+
+<p>If a Bluetooth connection has been established, any commands are routed to the
+{@code btAdkPortRx()} callback method (which was registered with the ADK library as part of the
+{@code btStart()} method) and processed accordingly. The ADK accessory sends messages back through
+the Bluetooth connection using the {@code ADK::btRfcommPortTx()} method.
+For more details, review the implementations of these methods in the {@code clock.ino} sketch.</p>
+
+<h4 id="app-bt-code">Android App Bluetooth Code</h4>
+
+<p>In the ADK 2012 Android app, the code for handling Bluetooth connections is encapsulated in in a
+{@code BTConnection} class. In this class, the application requests access to the Bluetooth adapter
+and negotiates a connection with the ADK 2012 accessory. Here is a summary of the relevant code:</p>
+
+<pre>
+mAdapter = BluetoothAdapter.getDefaultAdapter();
+BluetoothDevice device = mAdapter.getRemoteDevice(address);
+mSocket = device.createInsecureRfcommSocketToServiceRecord(ADK_UUID);
+mSocket.connect();
+</pre>
+
+<p>Note the {@code ADK_UUID} parameter in the second line. This identifier must match the identifier
+output by the accessory (the {@code BT_ADK_UUID} variable mentioned earlier), otherwise the protocol
+negotiation fails and the {@link android.bluetooth.BluetoothSocket} is not created. Once a
+connection is established, you obtain {@link java.io.InputStream} and {@link java.io.OutputStream}
+objects from the socket to communicate with the accessory:</p>
+
+<pre>
+mInStream = mSocket.getInputStream();
+mOutStream = mSocket.getOutputStream();
+</pre>
+
+<p>Review the {@code BTConnection.java} file provided in the ADK 2012 software download for more
+implementation details.</p>
+
+<h3 id="adk-conn-usb">ADK Connection over USB</h3>
+
+<p>The ADK 2012 app and hardware accessory can also use a USB connection to communicate, similar to
+the original ADK.</p>
+
+<h4 id="acc-usb-code">Accessory USB Code</h4>
+
+<p>The ADK library takes care of most of the implementation details for a USB connection, the
+accessory code must make a few calls to initialize USB connectivity, including setting the accessory
+identification strings:</p>
+
+<pre>
+ADK L;
+void setup() {
+  L.adkInit();
+  L.usbSetAccessoryStringVendor(...);
+  L.usbSetAccessoryStringName(...);
+  L.usbSetAccessoryStringLongname(...);
+  L.usbSetAccessoryStringVersion(...);
+  L.usbSetAccessoryStringUrl(...);
+  L.usbSetAccessoryStringSerial(...);
+
+  L.usbStart();
+}
+</pre>
+
+<p class="note"><strong>Note:</strong> The identification strings must match the USB accessory
+filter settings specified in the connecting Android application,otherwise the application cannot
+connect with the accessory.</p>
+
+<p>Once USB is enabled with code shown above, the accessory listens for connection requests. The ADK
+library handles listening and connection details, so the accessory calls {@code
+ADK::adkEventProcess()} once during each loop execution:</p>
+
+<pre>
+void loop(void)
+{
+  ...
+  L.adkEventProcess(); //let the adk framework do its thing
+  ...
+}
+</pre>
+
+<p>The accessory must then check for a live USB connection to process commands and send
+messages. Here is a summary of the relevant code:</p>
+
+<pre>
+void loop() {
+  if (L.accessoryConnected()) {
+    int recvLen = L.accessoryReceive(msg, sizeof(msg));
+    if (recvLen > 0) {
+      ... // process message
+    }
+
+    L.accessorySend(outmsg, outmsgLen);
+  }
+  L.adkEventProcess();
+}  
+</pre>
+
+<p>For more details, review the implementations of these methods in the {@code clock.ino}
+sketch.</p>
+
+<h4 id="app-usb-code">Android App USB Code</h4>
+
+<p>In the ADK 2012 Android app, the code for handling USB connections is encapsulated in a
+{@code UsbConnection} class. This class sets up a {@link android.content.BroadcastReceiver} to
+listen for USB events and then attempts to connect when a matching connection event is received.
+Here is a summary of the relevant code:</p>
+
+<pre>
+import com.android.future.usb.UsbAccessory;
+import com.android.future.usb.UsbManager;
+
+mUSBManager = UsbManager.getInstance(this);
+UsbAccessory acc = mUSBManager.getAccessoryList()[0];
+
+if (!mUSBManager.hasPermission(acc)) return;
+</pre>
+
+<p>The ADK 2012 app uses the support library to implement the USB accessory connections, in order to
+support devices running Android 2.3.4 (API Level 10). If you only need to support Android
+3.1 (API Level 12) and higher devices, you can replace the first 4 lines the following code:</p>
+
+<pre>
+import android.hardware.usb.UsbAccessory
+import android.hardware.usb.UsbManager
+
+mUSBManager = (UsbManager) getSystemService(Context.USB_SERVICE);
+UsbAccessory acc = (UsbAccessory)
+                   intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
+</pre>
+
+<p>Note that the app only receives events when the USB accessory identification information matches
+the information in the {@code res/xml/usb_accessory_filter.xml} file, referenced by the
+application’s manifest statement:</p>
+
+<pre>
+&lt;meta-data
+    android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
+    android:resource="@xml/usb_accessory_filter" /&gt;
+</pre>
+
+<p>Connections from other USB devices are not received by the ADK 2012 accessory.</p>
+
+<p>Once the connection is established, the app can communicate with the accessory through file input
+and output streams, as shown in the following example code:</p>
+
+<pre>
+ParcelFileDescriptor mFD = mUSBManager.openAccessory(acc);
+if (mFD != null) {
+  FileDescripter fd = mFD.getFileDescriptor();
+  mIS = new FileInputStream(fd);  // use this to receive messages
+  mOS = new FileOutputStream(fd); // use this to send commands
+}
+</pre>
+
+<p>Review the {@code UsbConnection.java} file provided in the ADK 2012 source code for more
+implementation details.</p>
+
+<h2 id="audio-dock">USB Audio Dock Implementation</h2>
+
+<p>One of the important new features introduced with the ADK 2012 is the ability to play audio over
+a USB connection. This innovation was introduced as an update to Android Open Accessory (AOA)
+<a href="aoa2.html">protocol 2.0</a> and is available on devices running Android 4.1 (API Level 16)
+and higher.</p>
+
+<p>The ADK 2012 provides a reference implementation of this functionality for accessory developers.
+No software application is required to be installed on the connected Android device, accessory
+developers only need to support AOA v2. This implementation demonstrates audio output of 16bit,
+44.1kHz stereo PCM source data compressed into a single channel due to the audio hardware available
+on the accessory.</p>
+
+<p>Using the audio output features provided by the ADK library requires only a few function calls.
+The first few calls are in the accessory {@code setup()} routine, which prepare the accessory for
+USB connections and audio output, as summarized in the code example below:</p>
+
+<pre>
+ADK L;
+void setup() {
+  L.audioInit();
+  L.usbh_init()
+  L.usbStart();
+}
+</pre>
+
+<p>For more information about the {@code ADK::audioInit()} function, see the {@code
+libraries/ADK/Audio.c} library file. For more information about the {@code ADK::usbh_init()}
+function, see the {@code libraries/ADK/Usbh.c} library file.</p>
+
+<p>After completing this setup, the {@code loop()} function calls {@code ADK::adkEventProcess()} to
+handle audio output and other ADK functions:</p>
+
+<pre>
+void loop(void)
+{
+  ...
+  L.adkEventProcess(); //let the adk framework do its thing
+  ...
+}
+</pre>
+
+<p>This call executes task queuing for the ADK and as part of the execution process, the task queue
+executes {@code usbh_work()} in {@code libraries/ADK/Usbh.c}, which handles audio output requests.
+Review the implementation of this function for details. For additional implementation details on
+audio output, see the {@code libraries/ADK/accessory.c} library file.</p>
diff --git a/docs/html/tools/adk/aoa.jd b/docs/html/tools/adk/aoa.jd
new file mode 100644
index 0000000..7884d6e
--- /dev/null
+++ b/docs/html/tools/adk/aoa.jd
@@ -0,0 +1,186 @@
+page.title=Android Open Accessory Protocol
+@jd:body
+
+<div id="qv-wrapper">
+    <div id="qv">
+      <h2>In this document</h2>
+      <ol>
+        <li><a href="#accessory-protocol">Implementing the Android Accessory Protocol</a>
+          <ol>
+            <li><a href="#wait">Wait for and detect connected devices</a></li>
+            <li><a href="#determine">Determine the device's accessory mode support</a></li>
+            <li><a href="#start">Attempt to start the device in accessory mode</a></li>
+            <li><a href="#establish">Establish communication with the device</a></li>
+        </li>
+      </ol>
+      
+      <h2>See also</h2>
+      <ol>
+        <li><a href="aoa2.html">Android Open Accessory Protocol 2.0</a></li>
+        <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory Dev
+Guide</a></li>
+      </ol>
+    </div>
+  </div>
+
+  <p>With Android 3.1, the platform introduces Android Open Accessory
+  support, which allows external USB hardware (an Android USB accessory) to interact with an
+  Android-powered device in a special accessory mode. When an Android-powered powered device is
+  in accessory mode, the connected accessory acts as the USB host (powers the bus and enumerates
+  devices) and the Android-powered device acts as the USB device. Android USB accessories are
+  specifically designed to attach to Android-powered devices and adhere to a simple protocol
+  (Android accessory protocol) that allows them to detect Android-powered devices that support
+  accessory mode. Accessories must also provide 500mA at 5V for charging power. Many previously
+  released Android-powered devices are only capable of acting as a USB device and cannot initiate
+  connections with external USB devices. Android Open Accessory support overcomes this limitation
+  and allows you to build accessories that can interact with an assortment of Android-powered
+  devices by allowing the accessory to initiate the connection.</p>
+
+  <p class="note"><strong>Note:</strong> Accessory mode is ultimately dependent on the device's
+  hardware and not all devices support accessory mode. Devices that support accessory mode can
+  be filtered using a <code>&lt;uses-feature&gt;</code> element in your corresponding application's
+  Android manifest. For more information, see the <a href=
+  "{@docRoot}guide/topics/connectivity/usb/accessory.html#manifest">USB Accessory</a> developer
+guide.</p>
+
+  <h2 id="accessory-protocol">Implementing the Android Accessory Protocol</h2>
+
+  <p>An Android USB accessory must adhere to Android Accessory Protocol, which defines how
+  an accessory detects and sets up communication with an Android-powered device. In general, an
+  accessory should carry out the following steps:</p>
+
+  <ol>
+    <li>Wait for and detect connected devices</li>
+
+    <li>Determine the device's accessory mode support</li>
+
+    <li>Attempt to start the device in accessory mode if needed</li>
+
+    <li>Establish communication with the device if it supports the Android accessory protocol</li>
+  </ol>
+
+  <p>The following sections go into depth about how to implement these steps.</p>
+
+  <h3 id="wait">Wait for and detect connected devices</h3>
+
+  <p>Your accessory should have logic to continuously check
+  for connected Android-powered devices. When a device is connected, your accessory should
+  determine if the device supports accessory mode.</p>
+
+  <h3 id="determine">Determine the device's accessory mode support</h3>
+
+
+  <p>When an Android-powered device is connected, it can be in one of three states:</p>
+
+  <ol type="a">
+    <li>The attached device supports Android accessory mode and is already in accessory mode.</li>
+
+    <li>The attached device supports Android accessory mode, but it is not in accessory mode.</li>
+
+    <li>The attached device does not support Android accessory mode.</li>
+  </ol>
+
+  <p>During the initial connection, the accessory should check the vendor and product IDs of the
+  connected device's USB device descriptor. The vendor ID should match Google's ID (0x18D1) and the
+  product ID should be 0x2D00 or 0x2D01 if the device is already in accessory mode (case A). If so,
+  the accessory can now <a href="#establish">establish communication with the device</a> through
+  bulk transfer endpoints with its own communication protocol. There is no need to start the device
+  in accessory mode.</p>
+
+  <p class="note"><strong>Note:</strong> 0x2D00 is reserved for Android-powered devices that
+  support accessory mode. 0x2D01 is reserved for devices that support accessory mode as well as the
+  ADB (Android Debug Bridge) protocol, which exposes a second interface with two bulk endpoints for
+  ADB. You can use these endpoints for debugging the accessory application if you are simulating
+  the accessory on a computer. In general, do not use this interface unless your accessory is
+  implementing a passthrough to ADB on the device.</p>
+
+  <p>If the vendor and product ID do not match, there is no way to distinguish between states b and
+  c, so the accessory <a href="#start">attempts to start the device in accessory mode</a> to figure
+  out if the device is supported.</p>
+
+  <h3 id="start">Attempt to start the device in accessory mode</h3>
+
+  <p>If the vendor and product IDs do not correspond to an Android-powered device in accessory
+  mode, the accessory cannot discern whether the device supports accessory mode and is not in that
+  state, or if the device does not support accessory mode at all. This is because devices that
+  support accessory mode but aren't in it initially report the device's manufacturer vendor ID and
+  product ID, and not the special Android Open Accessory ones. In either case, the accessory should
+try to start
+  the device into accessory mode to figure out if the device supports it. The following steps
+  explain how to do this:</p>
+
+  <ol>
+    <li>Send a 51 control request ("Get Protocol") to figure out if the device supports the Android
+    accessory protocol. A non-zero number is returned if the protocol is supported, which
+    represents the version of the protocol that the device supports (currently, only version 1
+    exists). This request is a control request on endpoint 0 with the following characteristics:
+      <pre>
+requestType:    USB_DIR_IN | USB_TYPE_VENDOR
+request:        51
+value:          0
+index:          0
+data:           protocol version number (16 bits little endian sent from the device to the
+accessory)
+</pre>
+    </li>
+
+    <li>If the device returns a proper protocol version, send identifying string information to the
+    device. This information allows the device to figure out an appropriate application for this
+    accessory and also present the user with a URL if an appropriate application does not exist.
+    These requests are control requests on endpoint 0 (for each string ID) with the following
+    characteristics:
+      <pre>
+requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+request:        52
+value:          0
+index:          string ID
+data            zero terminated UTF8 string sent from accessory to device
+</pre>
+
+      <p>The following string IDs are supported, with a maximum size of 256 bytes for each string
+      (must be zero terminated with \0).</p>
+      <pre>
+manufacturer name:  0
+model name:         1
+description:        2
+version:            3
+URI:                4
+serial number:      5
+</pre>
+    </li>
+
+    <li>When the identifying strings are sent, request the device start up in accessory mode. This
+    request is a control request on endpoint 0 with the following characteristics:
+      <pre>
+requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+request:        53
+value:          0
+index:          0
+data:           none
+</pre>
+    </li>
+  </ol>
+
+  <p>After sending the final control request, the connected USB device should re-introduce itself
+  on the bus in accessory mode and the accessory can re-enumerate the connected devices. The
+  algorithm jumps back to <a href="#determine">determining the device's accessory mode support</a>
+  to check for the vendor and product ID. The vendor ID and product ID of the device will be
+  different if the device successfully switched to accessory mode and will now correspond to
+  Google's vendor and product IDs instead of the device manufacturer's IDs. The accessory can now
+  <a href="#establish">establish communication with the device</a>.</p>
+
+  <p>If at any point these steps fail, the device does not support Android accessory mode and the
+  accessory should wait for the next device to be connected.</p>
+
+  <h3 id="establish">Establish communication with the device</h3>
+
+  <p>If an Android-powered device in accessory mode is detected, the accessory can query the
+  device's interface and endpoint descriptors to obtain the bulk endpoints to communicate with the
+  device. An Android-powered device that has a product ID of 0x2D00 has one interface with two bulk
+  endpoints for input and output communication. A device with product ID of 0x2D01 has two
+  interfaces with two bulk endpoints each for input and output communication. The first interface
+  is for standard communication while the second interface is for ADB communication. To communicate
+  on an interface, all you need to do is find the first bulk input and output endpoints, set the
+  device's configuration to a value of 1 with a SET_CONFIGURATION (0x09) device request, then
+  communicate using the endpoints.</p>
+
diff --git a/docs/html/tools/adk/aoa2.jd b/docs/html/tools/adk/aoa2.jd
new file mode 100644
index 0000000..2a3b2f0
--- /dev/null
+++ b/docs/html/tools/adk/aoa2.jd
@@ -0,0 +1,227 @@
+page.title=Android Open Accessory Protocol 2.0
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#detecting">Detecting Android Open Accessory 2.0 Support</a></li>
+      <li><a href="#audio-support">Audio Support</a></li>
+      <li><a href="#hid">HID Support</a></li>
+      <li><a href="#interop-aoa">Interoperability with AOA 1.0 Features</a></li>
+      <li><a href="#no-app-conn">Connecting AOA 2.0 without an Android App</a></li>
+    </ol>
+
+    <h2>See also</h2>
+    <ol>
+      <li><a href="aoa.html">Android Open Accessory Protocol</a></li>
+    </ol>
+  </div>
+</div>
+
+<p>This document describes the changes to the Android Open Accessory (AOA) protocol since its
+initial release, and is a supplement to the documentation of the <a href="oap.html">first
+release of AOA</a>.</p>
+
+<p>The Android Open Accessory Protocol 2.0 adds two new features: audio output (from the Android
+device to the accessory) and support for the accessory acting as one or more human interface devices
+(HID) to the Android device. The Android SDK APIs available to Android application developers
+remain unchanged.</p>
+
+<h2 id="detecting">Detecting Android Open Accessory 2.0 Support</h2>
+
+<p>In order for an accessory to determine if a connected Android device supports accessories and at
+what protocol level, the accessory must send a {@code getProtocol()} command and check the result.
+Android devices supporting the initial version of the Android Open Accessory protocol return a
+{@code 1}, representing the protocol version number. Devices that support the new features described
+in this document must return {@code 2} for the protocol version. Version 2.0 of the protocol is
+upwardly compatible, so accessories designed for the original accessory protocol still work
+with newer Android devices. The following code from the <a href="adk.html">Android Development Kit
+2011</a> {@code AndroidAccessory} library demonstrates this protocol check:</p>
+
+<pre>
+bool AndroidAccessory::switchDevice(byte addr)
+{
+    int protocol = getProtocol(addr);
+    if (protocol >= 1) {
+        Serial.print("device supports protocol 1 or higher\n");
+    } else {
+        Serial.print("could not read device protocol version\n");
+        return false;
+    }
+
+    sendString(addr, ACCESSORY_STRING_MANUFACTURER, manufacturer);
+    sendString(addr, ACCESSORY_STRING_MODEL, model);
+    sendString(addr, ACCESSORY_STRING_DESCRIPTION, description);
+    sendString(addr, ACCESSORY_STRING_VERSION, version);
+    sendString(addr, ACCESSORY_STRING_URI, uri);
+    sendString(addr, ACCESSORY_STRING_SERIAL, serial);
+
+    usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR |
+USB_SETUP_RECIPIENT_DEVICE,
+                ACCESSORY_START, 0, 0, 0, 0, NULL);
+    return true;
+}
+</pre>
+
+<p>AOA 2.0 includes new USB product IDs, one for each combination of USB interfaces available when
+in accessory mode. The possible USB interfaces are:</p>
+
+<ul>
+  <li><strong>accessory</strong> - An interface providing 2 bulk endpoints for communicating with an
+Android application.</li>
+  <li><strong>audio</strong> -A new standard USB audio class interface for streaming audio
+from an Android device to an accessory.</li>
+  <li><strong>adb</strong> - An interface intended only for debugging purposes while developing an
+accessory. Only enabled if the user has USB Debugging enabled in Settings on the Android device.
+  </li>
+</ul>
+
+<p>In AOA 1.0, there are only two USB product IDs:</p>
+
+<ul>
+  <li>{@code 0x2D00} - accessory</li>
+  <li>{@code 0x2D01} - accessory + adb</li>
+</ul>
+
+<p>AOA 2.0 adds an optional USB audio interface and, therefore, includes product IDs for the new
+combinations of USB interfaces:</p>
+
+<ul>
+  <li>{@code 0x2D02} - audio</li>
+  <li>{@code 0x2D03} - audio + adb</li>
+  <li>{@code 0x2D04} - accessory + audio</li>
+  <li>{@code 0x2D05} - accessory + audio + adb</li>
+</ul>
+
+<h2 id="audio-support">Audio Support</h2>
+
+<p>AOA 2.0 includes optional support for audio output from an Android device to an accessory. This
+version of the protocol supports a standard USB audio class interface that is capable of 2 channel
+16-bit PCM audio with a bit rate of 44100 Khz. AOA 2.0 is currently limited to this output mode, but
+additional audio modes may be added in the future.</p>
+
+<p>To enable the audio support, the accessory must send a new USB control request:</p>
+
+<pre>
+<strong>SET_AUDIO_MODE</strong>
+requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+request:        58
+value:          0 for no audio (default),
+                1 for 2 channel, 16-bit PCM at 44100 KHz
+index:          0
+data            none
+</pre>
+
+<p>This command must be sent <em>before</em> sending the {@code ACCESSORY_START} command for
+entering accessory mode.</p>
+
+<h2 id="hid">HID Support</h2>
+
+<p>AOA 2.0 allows the accessory to register one or more HID devices with
+an Android device. This approach reverses the direction of communication for typical USB HID
+devices like USB mice and keyboards. Normally, the HID device is a peripheral connected to a USB
+host like a personal computer. But in the case of the AOA protocol, the USB host acts as one or more
+input devices to a USB peripheral.</p>
+
+<p>HID support in AOA 2.0 is simply a proxy for standard HID events. The implementation makes no
+assumptions about the content or type of events and merely passes it through to the input system, 
+so an AOA 2.0 accessory can act as any HID device (mouse, keyboard, game controller, etc.). It
+can be used for something as simple as the play/pause button on a media dock, or something as
+complicated as a docking station with a mouse and full QWERTY keyboard.</p>
+
+<p>The AOA 2.0 protocol adds four new USB control requests to allow the accessory to act as one or
+more HID input devices to the Android device.  Since HID support is done entirely through
+control requests on endpoint zero, no new USB interface is needed to provide this support. The
+control requests are as follows:</p>
+
+<ul>
+  <li><strong>ACCESSORY_REGISTER_HID</strong> registers a new HID device with the Android device.
+The accessory provides an ID number that is used to identify the HID device for the other three
+calls. This ID is valid until USB is disconnected or until the accessory sends
+ACCESSORY_UNREGISTER_HID to unregister the HID device.</li>
+  <li><strong>ACCESSORY_UNREGISTER_HID</strong> unregisters a HID device that was previously
+registered with ACCESSORY_REGISTER_HID.</li>
+  <li><strong>ACCESSORY_SET_HID_REPORT_DESC</strong> sends a report descriptor for a HID device to
+the Android device. This request is used to describe the capabilities of the HID device, and must
+be sent before reporting any HID events to the Android device. If the report descriptor is larger
+than the maximum packet size for endpoint zero, multiple ACCESSORY_SET_HID_REPORT_DESC commands are
+sent in order to transfer the entire descriptor.</li>
+  <li><strong>ACCESSORY_SEND_HID_EVENT</strong> sends input events from the accessory to the Android
+device.</li>
+</ul>
+
+<p>The code definitions for these new control requests are as follows:</p>
+
+<pre>
+/* Control request for registering a HID device.
+ * Upon registering, a unique ID is sent by the accessory in the
+ * value parameter. This ID will be used for future commands for
+ * the device
+ *
+ *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *  request:        ACCESSORY_REGISTER_HID_DEVICE
+ *  value:          Accessory assigned ID for the HID device
+ *  index:          total length of the HID report descriptor
+ *  data            none
+ */
+#define ACCESSORY_REGISTER_HID         54
+
+/* Control request for unregistering a HID device.
+ *
+ *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *  request:        ACCESSORY_REGISTER_HID
+ *  value:          Accessory assigned ID for the HID device
+ *  index:          0
+ *  data            none
+ */
+#define ACCESSORY_UNREGISTER_HID         55
+
+/* Control request for sending the HID report descriptor.
+ * If the HID descriptor is longer than the endpoint zero max packet size,
+ * the descriptor will be sent in multiple ACCESSORY_SET_HID_REPORT_DESC
+ * commands. The data for the descriptor must be sent sequentially
+ * if multiple packets are needed.
+ *
+ *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *  request:        ACCESSORY_SET_HID_REPORT_DESC
+ *  value:          Accessory assigned ID for the HID device
+ *  index:          offset of data in descriptor
+ *                      (needed when HID descriptor is too big for one packet)
+ *  data            the HID report descriptor
+ */
+#define ACCESSORY_SET_HID_REPORT_DESC         56
+
+/* Control request for sending HID events.
+ *
+ *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *  request:        ACCESSORY_SEND_HID_EVENT
+ *  value:          Accessory assigned ID for the HID device
+ *  index:          0
+ *  data            the HID report for the event
+ */
+#define ACCESSORY_SEND_HID_EVENT         57
+</pre>
+
+<h2 id="interop-aoa">Interoperability with AOA 1.0 Features</h2>
+
+<p>The original <a href="aoa.html">AOA protocol</a> provided support for an Android application to
+communicate directly with a USB host (accessory) over USB. AOA 2.0 keeps that support, but adds new
+features to allow the accessory to communicate with the Android operating system itself
+(specifically the audio and input systems). The design of the AOA 2.0 makes it is possible to build
+an accessory that also makes use of the new audio and/or HID support in addition to the original
+feature set. Simply use the new features described in this document in addition to the original AOA
+protocol features.</p>
+
+<h2 id="no-app-conn">Connecting AOA 2.0 without an Android App</h2>
+
+<p>It is possible to design an accessory (for example, an audio dock) that uses the new audio and
+HID support, but does not need to communicate with an application on the Android device. In that
+case, the user would not want to see the dialog prompts related to finding and associating the newly
+attached accessory with an Android application that can communicate with it. To prevent these
+dialogs from appearing after the device and accessory are connected, the accessory can simply not
+send the manufacturer and model names to the Android device. If these strings are not provided to
+the Android device, then the accessory is able to make use of the new audio and HID support in AOA
+2.0 without the system attempting to find an application to communicate with the accessory. Also,
+if these strings are not provided, the accessory USB interface is not present in the Android
+device USB configuration after the device enters accessory mode.</p>
\ No newline at end of file
diff --git a/docs/html/tools/adk/index.jd b/docs/html/tools/adk/index.jd
new file mode 100644
index 0000000..4b9b042
--- /dev/null
+++ b/docs/html/tools/adk/index.jd
@@ -0,0 +1,34 @@
+page.title=Accessory Development Kit
+@jd:body
+
+<p>The Accessory Development Kit (ADK) is a reference implementation for hardware manufacturers and
+hobbyists to use as a starting point for building accessories for Android. Each ADK release is
+provided with source code and hardware specifications to make the process of developing your own
+accessories easier. Creating new and alternative hardware based on the ADK is encouraged!</p>
+
+<p>Android accessories can be audio docking stations, exercise machines, personal medical testing
+devices, weather stations, or any other external hardware device that adds to the functionality of
+Android.</p>
+
+<p>Accessories use the Android Open Accessory (AOA) protocol to communicate with Android
+devices, over USB cable or through a Bluetooth connection. If you are building an accessory for
+Android devices, make sure you review the information below to understand about how to implement the
+AOA protocol.</p>
+
+<p>The following sections provide more information about the Android Accessory Development Kits, how
+to use them, and how to get started building your own accessories for Android.</p>
+
+<dl>
+  <dt><a href="adk2.html">ADK 2012 Guide</a></dt>
+  <dd>Guide to getting started with the ADK released at Google I/O 2012.</dd>
+
+  <dt><a href="adk.html">ADK 2011 Guide</a></dt>
+  <dd>Guide to getting started with the original ADK, released at Google I/O 2011.</dd>
+
+  <dt><a href="aoa.html">Android Open Accessory Protocol</a></dt>
+  <dd>Guide to implementing the Android Open Accessory Protocol.</dd>
+
+  <dt><a href="aoa2.html">Android Open Accessory Protocol 2.0</a></dt>
+  <dd>A description and guide to implementing the extended Android Open Accessory Protocol which
+  supports audio dock accessories.</dd>
+</dl>
diff --git a/docs/html/tools/extras/support-library.jd b/docs/html/tools/extras/support-library.jd
index 7258c77..869a15b 100644
--- a/docs/html/tools/extras/support-library.jd
+++ b/docs/html/tools/extras/support-library.jd
@@ -46,14 +46,120 @@
 <p>The sections below provide notes about successive releases of
 the Support Package, as denoted by revision number.</p>
 
-<div class="toggle-content open">
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot +
+"assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot +
+"assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
 
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img" />
-    Support Package, revision 8 (April 2012)
-  </a></p>
+<style>
+.toggleable {
+padding: 5px 0 0;
+}
+.toggleme {
+  padding: 10px 0 0 20px;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleme a {
+  text-decoration:underline;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0 5px 3px 0;
+}
+</style>
 
-  <div class="toggle-content-toggleme" style="padding-left:2em">
+<div class="toggleable opened">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px"
+/>Support Package, revision 9</a> <em>(June 2012)</em>
+  <div class="toggleme">
+    <dl>
+      <dt>Changes for v4 support library:</dt>
+      <dd>
+        <ul>
+
+          <li>User Interface Support
+            <ul>
+              <li>Added {@link android.support.v4.view.PagerTabStrip} support, providing enhanced
+functionality beyond {@link android.support.v4.view.PagerTitleStrip}.</li>
+              <li>Fixed various bugs for {@link android.support.v4.view.PagerTitleStrip} and
+{@link android.support.v4.view.PagerTabStrip}, including {@link
+android.widget.TextView#setAllCaps setAllCaps} option, title alignment,
+appearance improvements, minimum width constraints and touch navigation issues.</li>
+              <li>Added support for {@link android.support.v4.view.ViewPager} page gutters, which
+helps the {@link android.support.v4.view.ViewPager} class provide paging support for content with
+a large horizontal scroll range, such as a map.</li>
+              <li>Fixed numerous bugs for {@link android.support.v4.view.ViewPager}, including size
+and data set change problems, page positioning, user interaction, scroll tracking and keyboard
+navigation problems.</li>
+              <li>Fixed many bugs for {@link android.support.v4.app.Fragment}, including proper
+handling of {@link android.support.v4.app.Fragment#onActivityResult onActivityResult()} when
+the target fragment no longer exists, dispatching selection events to invisible fragments, improved
+{@link android.support.v4.app.FragmentTransaction#replace FragmentTransaction.replace()} behavior
+and added better state handling for fragments being moved out of view.</li>
+              <li>Added support for the {@link
+android.support.v4.view.ViewCompat postOnAnimation()} method in {@link
+android.support.v4.view.ViewCompat}.</li>
+              <li>Updated {@link android.support.v4.app.NavUtils} to use Android 4.1 (API level 16)
+<em>Up</em> navigation functionality when available.</li>
+            </ul>
+          </li>
+
+          <li>Accessibility
+            <ul>
+              <li>Updated accessibility support classes, including {@link
+android.support.v4.view.accessibility.AccessibilityNodeInfoCompat}, to follow fixes made in Android
+4.1 (API level 16).</li>
+              <li>Added support for accessibility scroll actions in {@link
+android.support.v4.view.ViewPager}.</li>
+            </ul>
+          </li>
+
+          <li>General improvements
+            <ul>
+              <li>Updated {@link android.support.v4.app.TaskStackBuilder} to reflect API changes in
+Android 4.1 (API level 16).</li>
+              <li>Enhanced {@link android.support.v4.app.TaskStackBuilder} to allow it to be used
+from a Service.</li>
+              <li>Added support for {@link android.support.v4.content.IntentCompat EXTRA_HTML_TEXT}
+to {@link android.support.v4.app.ShareCompat}.</li>
+              <li>Updated {@link android.support.v4.app.NotificationCompat.Builder} to support the
+{@link android.support.v4.app.NotificationCompat.Builder#setNumber setNumber()} method.</li>
+              <li>Added support in {@link android.support.v4.net.ConnectivityManagerCompat} for the
+{@link android.support.v4.net.ConnectivityManagerCompat#isActiveNetworkMetered
+isActiveNetworkMetered()} method.</li>
+            </ul>
+          </li>
+        </ul>
+      </dd>
+    </dl>
+  </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Support Package, revision 8</a> <em>(April 2012)</em>
+  <div class="toggleme">
     <dl>
       <dt>Changes for v4 support library:</dt>
       <dd>
@@ -67,16 +173,14 @@
         </ul>
       </dd>
     </dl>
+  </div>
 </div>
 
-<div class="toggle-content closed">
-
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" />
-    Support Package, revision 7 (March 2012)
-  </a></p>
-
-  <div class="toggle-content-toggleme" style="padding-left:2em">
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Support Package, revision 7</a> <em>(March 2012)</em>
+  <div class="toggleme">
     <dl>
       <dt>Changes for v4 support library:</dt>
       <dd>
@@ -98,15 +202,14 @@
       </dd>
     </dl>
   </div>
+</div>
 
-<div class="toggle-content closed">
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Support Package, revision 6</a> <em>(December 2011)</em>
+  <div class="toggleme">
 
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" />
-    Support Package, revision 6 (December 2011)
-  </a></p>
-
-  <div class="toggle-content-toggleme" style="padding-left:2em">
     <p class="note"><strong>Note:</strong> Reference for support library APIs are now available with
     the framework references, for example: {@link android.support.v4.app}.</p>
 <dl>
@@ -151,15 +254,13 @@
       </dd>
     </dl>
   </div>
+</div>
 
-<div class="toggle-content closed">
-
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" />
-    Support Package, revision 5 (December 2011)
-  </a></p>
-
-  <div class="toggle-content-toggleme" style="padding-left:2em">
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Support Package, revision 5</a> <em>(December 2011)</em>
+  <div class="toggleme">
     <dl>
       <dt>Changes for v4 support library:</dt>
       <dd>
@@ -211,15 +312,13 @@
       </dd>
     </dl>
   </div>
+</div>
 
-<div class="toggle-content closed">
-
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" />
-    Support Package, revision 4 (October 2011)
-  </a></p>
-
-  <div class="toggle-content-toggleme" style="padding-left:2em">
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Support Package, revision 4</a> <em>(October 2011)</em>
+  <div class="toggleme">
     <dl>
       <dt>Changes for v4 support library:</dt>
       <dd>
@@ -253,20 +352,14 @@
       </dd>
     </dl>
   </div>
-
-
-
 </div>
 
 
-<div class="toggle-content closed">
-
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" />
-    Compatibility Package, revision 3 (July 2011)
-  </a></p>
-
-  <div class="toggle-content-toggleme" style="padding-left:2em">
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Compatibility Package, revision 3</a> <em>(July 2011)</em>
+  <div class="toggleme">
     <dl>
       <dt>Changes for v4 support library:</dt>
       <dd>
@@ -309,18 +402,14 @@
       </dd>
     </dl>
   </div>
-
 </div>
 
 
-<div class="toggle-content closed">
-
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" />
-    Compatibility Package, revision 2 (May 2011)
-  </a></p>
-
-  <div class="toggle-content-toggleme" style="padding-left:2em">
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Compatibility Package, revision 2</a> <em>(May 2011)</em>
+  <div class="toggleme">
     <dl>
     <dt>Changes for v4 library:</dt>
     <dd>
@@ -332,21 +421,16 @@
     </dd>
     </dl>
   </div>
-
 </div>
 
 
-<div class="toggle-content closed">
-
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" />
-    Compatibility Package, revision 1 (March 2011)
-  </a></p>
-
-  <div class="toggle-content-toggleme" style="padding-left:2em">
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
+/>Compatibility Package, revision 1</a> <em>(March 2011)</em>
+  <div class="toggleme">
       <p>Initial release with the v4 library.</p>
   </div>
-
 </div>
 
 
diff --git a/docs/html/tools/help/gltracer.jd b/docs/html/tools/help/gltracer.jd
new file mode 100644
index 0000000..35c405e
--- /dev/null
+++ b/docs/html/tools/help/gltracer.jd
@@ -0,0 +1,103 @@
+page.title=Tracer for OpenGL ES
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="running">Running Tracer</a></li>
+    <li><a href="generating">Generating a Trace</a></li>
+    <li><a href="analyzing">Analyzing a Trace</a></li>
+  </ol>
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}tools/index.html">Tools</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Tracer is a tool for analyzing OpenGL for Embedded Systems (ES) code in your Android application.
+The tool allows you to capture OpenGL ES commands and frame by frame images to help you understand
+how your graphics commands are being executed.</p>
+
+<p class="note"><strong>Note:</strong> The Tracer tool requires a device running Android 4.1 (API
+Level 16) or higher.</p>
+
+
+<h2 id="running">Running Tracer</h2>
+
+<p>Tracer can be run as part of the Eclipse Android Development Tools (ADT) plugin or as part of the
+Device Monitor tool.</p>
+
+<p>To run Tracer in Eclipse:</p>
+
+<ol>
+  <li>Start Eclipse and open a workspace that contains an Android project.</li>
+  <li>Activate the perspective for Tracer by choosing <strong>Window > Open Perspective >
+Other...</strong></li>
+  <li>Select <strong>Tracer for OpenGL ES</strong> and click <strong>OK</strong>.</li>
+</ol>
+
+<p>To run Tracer in Device Monitor:</p>
+
+<ol>
+  <li>Start the <a href="monitor.html">Device Monitor</a> tool.</li>
+  <li>Activate the perspective for Tracer by choosing <strong>Window > Open
+Perspective...</strong></li>
+  <li>Select <strong>Tracer for OpenGL ES</strong> and click <strong>OK</strong>.</li>
+</ol>
+
+<h2 id="generating">Generating a Trace</h2>
+
+<p>Tracer captures OpenGL ES command execution logs and can also capture progressive images of the
+frames generated by those commands to enable you to perform logical and visual analysis of your
+OpenGL ES code. The Tracer tool operates by connecting to a device running Android 4.1 (API Level
+16) or higher that is running the application you want to analyze. The Tracer tool captures trace
+information while the application is running and saves it to a {@code .gltrace} file for
+analysis.</p>
+
+<img src="{@docRoot}images/gltracer/dialog-trace.png">
+<p class="img-caption"><strong>Figure 1.</strong> Trace capture dialog box.</p>
+
+<p>To capture an OpenGL ES trace for an Android application:</p>
+
+<ol>
+  <li>Connect the Android device using a USB cable and make sure it is enabled for debugging. For
+more information, see <a href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</li>
+  <li>In Eclipse or Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
+perspective.</li>
+  <li>On the toolbar, click the trace capture button (<img
+src="{@docRoot}images/gltracer/icon-capture.png">).</li>
+  <li>In the dialog box, select the <strong>Device</strong> to use for the trace.</li>
+  <li>In the <strong>Application Package</strong> field, enter the full application package name
+containing the activity you want to trace, for example: {@code com.example.android.opengl}</li>
+  <li>In the <strong>Activity to launch</strong> field, enter the class name of the activity you
+want to trace, for example: {@code OpenGLES20Complete}
+  <p class="note"><strong>Note:</strong> If you are tracing the default activity for the
+application, you can leave this field blank.</p>
+  </li>
+  <li>Select the desired <strong>Data Collection Options</strong>.
+    <p class="note"><strong>Note:</strong> If you want to capture progressive frame images for each
+drawing call, enable the <strong>Read back currently bound framebuffer on glDraw*()</strong> option.
+Be aware that using this option can result in large trace files.</p>
+  </li>
+  <li>Enter a <strong>Destination File</strong> for the trace output.</li>
+  <li>Click <strong>Trace</strong> to start the trace capture.</li>
+  <li>On the connected device, exercise the functions of your application you want to trace.</li>
+  <li>In the dialog box, <strong>Stop Tracing</strong> to complete the tracing run.</li>
+</ol>
+
+<h2 id="analyzing">Analyzing a Trace</h2>
+
+<p>After you have generated a trace, you can load it for review and analysis.</p>
+
+<p>To review a captured trace:</p>
+
+<ol>
+  <li>In Eclipse or Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
+perspective.</li>
+  <li>On the toolbar, click the trace load button (<img
+src="{@docRoot}images/gltracer/icon-load-trace.png">).</li>
+  <li>After loading a trace, select a frame and review the OpenGL ES calls. Drawing commands are
+highlighted in blue.</li>
+</ol>
\ No newline at end of file
diff --git a/docs/html/tools/help/monitor.jd b/docs/html/tools/help/monitor.jd
new file mode 100644
index 0000000..8e2ea36
--- /dev/null
+++ b/docs/html/tools/help/monitor.jd
@@ -0,0 +1,24 @@
+page.title=Debug Monitor
+@jd:body
+
+<p>Android Debug Monitor is a stand-alone tool that provides a graphical user interface for
+several Android application debugging and analysis tools. The Monitor tool does not
+require installation of a integrated development environment, such as Eclipse, and encapsulates the
+following tools:</p>
+
+<ul>
+  <li><a href="{@docRoot}tools/debugging/ddms.html">DDMS</a></li>
+  <li><a href="gltracer.html">Tracer for OpenGL ES</a></li>
+  <li><a href="hierarchy-viewer.html">Hierarchy Viewer</a></li>
+  <li><a href="traceview.html">Traceview</a></li>
+  <li>Pixel Perfect magnification viewer</li>
+</ul>
+
+<h2 id="usage">Usage</h2>
+
+<p>To start Debug Monitor, enter the following command from the SDK <code>tools/</code>
+directory:</p>
+  <pre>monitor</pre>
+
+<p>Start an Android emulator or connect an Android device via USB cable, and connect the Debug
+Monitor to the device by selecting it in the <strong>Devices</strong> window.</p>
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
index ac200b6..ae3eb05 100644
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ b/docs/html/tools/sdk/eclipse-adt.jd
@@ -32,7 +32,8 @@
 plugin and install it into your Eclipse development environment. Note that
 before you can install or use ADT, you must have compatible versions of both the
 Eclipse IDE and the Android SDK installed. For details, make sure to read <a
-href="#installing">Installing the ADT Plugin</a>, below. </p>
+href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse
+Plugin</a>. </p>
 
 <p>If you are already using ADT, this document also provides instructions on
 how to update ADT to the latest version or how to uninstall it, if necessary.
@@ -96,6 +97,128 @@
   <a href="#" onclick="return toggleDiv(this)">
         <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px"
 width="9px" />
+ADT 20.0.0</a> <em>(June 2012)</em>
+  <div class="toggleme">
+<dl>
+  <dt>Dependencies:</dt>
+
+  <dd>
+    <ul>
+      <li>Java 1.6 or higher is required for ADT 20.0.0.</li>
+      <li>Eclipse Helios (Version 3.6.2) or higher is required for ADT 20.0.0.</li>
+      <li>ADT 20.0.0 is designed for use with <a href="{@docRoot}sdk/tools-notes.html">SDK Tools
+      r20</a>. If you haven't already installed SDK Tools r20 into your SDK, use the Android SDK
+      Manager to do so.</li>
+    </ul>
+  </dd>
+
+  <dt>General improvements:</dt>
+  <dd>
+    <ul>
+      <li>Application Templates
+        <ul>
+          <li>Added Android application templates to allow developers to create specific types of
+applications faster, using Android-recommended best practices.</li>
+        </ul>
+      </li>
+      <li>Performance
+        <ul>
+          <li>Improved overall ADT performance and fixed memory issues. Loading SDK data
+should be up to 30% faster.</li>
+        </ul>
+      </li>
+      <li>Tracer for GLES
+        <ul>
+          <li>Added new perspective view and tools for tracing OpenGL calls for an application and
+track the visual results of each call. (<a href="{@docRoot}tools/gltracer.html">more info</a>)</li>
+        </ul>
+      </li>
+      <li>Lint
+        <ul>
+          <li>Added new Lint rules for manifest registrations, duplicate activity
+registrations, security checking, correct use of Toast, missing SharedPreferences commit()
+calls, Fragment class instantiation, and handler leaks.</li>
+          <li>Created tighter integration of lint with the layout editor. (<a
+href="http://tools.android.com/recent/lintfeedback">more info</a>)</li>
+          <li>Added execution of Lint tool on save option for Java files. (<a
+href="http://tools.android.com/recent/lintonsave">more info</a>)</li>
+        </ul>
+      </li>
+      <li>Layout Editor (<a href="http://tools.android.com/recent/newlayouteditorpropertysheet">more
+info</a>)
+        <ul>
+          <li>Added highlighting (in bold) for important attributes, inline preview of colors and
+images, including the corresponding resource name.</li>
+          <li>Added display of default values, when available.</li>
+          <li>Added completion of resource values and enum and flag constants.</li>
+          <li>Added support for displaying advanced properties, and nested properties for better
+categorization, for example, layout params are listed first as a single nested property.</li>
+          <li>Display Tooltips over the attribute names, not values, so they never obscure the value
+column.</li>
+          <li>Provided checkbox support for boolean values.</li>
+          <li>Added support for switching between alphabetical and natural sort orders.</li>
+          <li>Improved layout editor tool's window management for more usable editing views.</li>
+          <li>Improved the layout editor's configuration chooser header user interface.</li>
+        </ul>
+      </li>
+      <li>XML Editing
+        <ul>
+          <li>Added go to declaration support for theme references (?android:attr, ?attr:).</li>
+          <li>Improved code completion in style definitions.</li>
+          <li>Improved code completion for the {@code minSdkVersion} and {@code targetSdkVersion}
+attributes in manifest files so that version descriptions are displayed for each of the API
+levels</li>
+          <li>Provided support for code completion of custom attributes for custom views,
+including current edits to the style files.</li>
+          <li>Improved synchronization of text and graphic editors with the XML outline view,
+including outline changes and display of current selection.</li>
+        </ul>
+      </li>
+      <li>Build System
+        <ul>
+          <li>Added automatic merging of library project manifest files into the including
+project's manifest. Enable this feature with the {@code manifestmerger.enabled} property.</li>
+          <li>Added automatic ProGuard support for the {@code aapt -G} flag. This change causes
+the build system to generate a temporary ProGuard keep-rules file containing classes that
+are referenced from XML files (such as custom views) and pass this to ProGuard at shrink-time. This
+can make the resulting APK much smaller when using just a small portion of a large library project
+(such as the Android Support library), since the catch-all rules to keep all custom views from the
+default ProGuard configuration file have also been removed.</li>
+        </ul>
+      </li>
+      <li>Added support building and debugging NDK-based Android projects.</li>
+      </li>
+      <li>Added support to the Asset Studio Wizard for padding and turning off background
+shapes.</li>
+      <li>Improved LogCat to allow developers to set colors for different priorities.</li>
+      <li>Improved app Run functionality to allow running on multiple devices with a single launch.
+The target tab in the launch configuration dialog includes an option to allow launching on all
+connected devices, with the option to further narrow the list to just physical devices or just
+emulators. (This feature is available only for Run configurations, and not for Debug or JUnit
+tests.)</li>
+    <ul>
+  </dd>
+
+  <dt>Bug fixes:</dt>
+  <dd>
+    <ul>
+      <li>Fixed a number of issues where Lint incorrectly reported code errors or failed to
+flag code issues.</li>
+      <li>Fixed several bugs in the layout editor.</li>
+      <li>Fixed compatibility issues with Eclipse 4.x (Juno), including cut/copy/paste
+functions.</li>
+    </ul>
+  </dd>
+
+</dl>
+
+</div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px"
+width="9px" />
 ADT 18.0.0</a> <em>(April 2012)</em>
   <div class="toggleme">
 <dl>
diff --git a/docs/html/tools/sdk/ndk/index.jd b/docs/html/tools/sdk/ndk/index.jd
index 956d939..6be3168 100644
--- a/docs/html/tools/sdk/ndk/index.jd
+++ b/docs/html/tools/sdk/ndk/index.jd
@@ -16,7 +16,59 @@
 
 @jd:body
 
-<h2 id="notes">Revisions</h2>
+
+ <div id="qv-wrapper">
+    <div id="qv">
+      <h2>In this document</h2>
+
+      <ol>
+        <li><a href="#Downloads">Downloads</a></li>
+        <li><a href="#Revisions">Revisions</a></li>
+        <li><a href="#Reqs">System and Software Requirements</a></li>
+        <li><a href="#Installing">Installing the NDK</a></li>
+        <li><a href="#GetStarted">Getting Started with the NDK</a>
+          <ol>
+            <li><a href="#Using">Using the NDK</a></li>
+          </ol>
+        </li>
+        <li><a href="#Contents">Contents of the NDK</a>
+          <ol>
+            <li><a href="#Tools">Development tools</a></li>
+            <li><a href="#Docs">Documentation</a></li>
+            <li><a href="#Samples">Sample apps</a></li>
+          </ol>
+        </li>
+      </ol>
+    </div>
+  </div>
+  
+  <p>The NDK is a toolset that allows you to implement parts
+  of your app using native-code languages such as C and C++. For certain types of apps,
+  this can be helpful so that you may reuse existing code libraries written in these
+  languages and possibly increased performance.</p>
+
+  <p>Before downloading the NDK, you should understand that <strong>the NDK
+   will not benefit most apps</strong>. As a developer, you need to balance its benefits
+  against its drawbacks. Notably, using native code on Android
+  generally does not result in a noticable performance improvement,
+  but it always increases your app complexity. In general, you should only use the NDK
+  if it is essential to your app&mdash;never because you simply prefer to program in C/C++.</p>
+
+  <p>Typical good candidates for the NDK are self-contained, CPU-intensive operations that don't
+  allocate much memory, such as signal processing, physics simulation, and so on. When examining
+  whether or not you should develop in native code, think about your requirements and see if the
+  Android framework APIs provide the functionality that you need.</p>
+
+
+<h2 id="Downloads">Downloads</h2>
+
+  
+<script>
+$('#Downloads').after($('#download-table'));
+</script>
+  
+  
+<h2 id="Revisions">Revisions</h2>
 
 <p>The sections below provide information and notes about successive releases of
 the NDK, as denoted by revision number. </p>
@@ -98,7 +150,7 @@
 
         <p class="note"><strong>Note:</strong> To ensure that your applications are available
 to users only if their devices are capable of running them, Google Play filters applications based
-on the instruction set information included in your application — no action is needed on your part
+on the instruction set information included in your application ? no action is needed on your part
 to enable the filtering. Additionally, the Android system itself also checks your application at
 install time and allows the installation to continue only if the application provides a library that
 is compiled for the device's CPU architecture.</p>
@@ -313,7 +365,7 @@
           native features to the platform:
 
             <ul>
-              <li>Added native multimedia API based on the Khronos Group OpenMAX AL™ 1.0.1
+              <li>Added native multimedia API based on the Khronos Group OpenMAX AL? 1.0.1
               standard. The new <code>&lt;OMXAL/OpenMAXAL.h&gt;</code> and
               <code>&lt;OMXAL/OpenMAXAL_Android.h&gt;</code> headers allow applications targeting
               API level 14 to perform multimedia output directly from native code by using a new
@@ -321,7 +373,7 @@
               <code>docs/openmaxal/index.html</code> and <a href=
               "http://www.khronos.org/openmax/">http://www.khronos.org/openmax/</a>.</li>
 
-              <li>Updated the native audio API based on the Khronos Group OpenSL ES 1.0.1™
+              <li>Updated the native audio API based on the Khronos Group OpenSL ES 1.0.1?
               standard. With API Level 14, you can now decode compressed audio (e.g. MP3, AAC,
               Vorbis) to PCM. For more details, see <code>docs/opensles/index.html</code> and
               <a href=
@@ -1052,7 +1104,216 @@
     </div>
   </div>
   
-  <h2 id="installing">Installing the NDK</h2>
+  
+  
+  
+  
+<!-- ####################### END OF RELEASE NOTES ####################### -->
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  <h2 id="Reqs">System and Software Requirements</h2>
+
+  <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>
+
+  <h4>The Android SDK</h4>
+
+  <ul>
+    <li>A complete Android SDK installation (including all dependencies) is required.</li>
+
+    <li>Android 1.5 SDK or later version is required.</li>
+  </ul>
+
+  <h4>Supported operating systems</h4>
+
+  <ul>
+    <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
+
+    <li>Mac OS X 10.4.8 or later (x86 only)</li>
+
+    <li>Linux (32 or 64-bit; Ubuntu 8.04, or other Linux distributions using GLibc 2.7 or
+later)</li>
+  </ul>
+
+  <h4>Required development tools</h4>
+
+  <ul>
+    <li>For all development platforms, GNU Make 3.81 or later is required. Earlier versions of GNU
+    Make might work but have not been tested.</li>
+
+    <li>A recent version of awk (either GNU Awk or Nawk) is also required.</li>
+
+    <li>For Windows, <a href="http://www.cygwin.com">Cygwin</a> 1.7 or higher is required. The NDK
+    will <em>not</em> work with Cygwin 1.5 installations.</li>
+  </ul>
+
+  <h4 id="platform-compat">Android platform compatibility</h4>
+
+  <ul>
+    <li>The native libraries created by the Android NDK can only be used on devices running
+      specific minimum Android platform versions. The minimum required platform version depends on
+      the CPU architecture of the devices you are targeting. The following table details which
+      Android platform versions are compatible with native code developed for specific CPU
+      architectures.
+
+    <table style="margin:1em;">
+      <tr>
+        <th>Native Code CPU Architecture Used</th>
+        <th>Compatible Android Platform(s)</th>
+      </tr>
+
+      <tr>
+        <td>ARM, ARM-NEON</td>
+        <td>Android 1.5 (API Level 3) and higher</td>
+      </tr>
+
+      <tr>
+        <td>x86</td>
+        <td>Android 2.3 (API Level 9) and higher</td>
+      </tr>
+
+      <tr>
+        <td>MIPS</td>
+        <td>Android 2.3 (API Level 9) and higher</td>
+      </tr>
+    </table>
+
+      <p>These requirements mean you can use native libraries produced with the NDK in
+      applications that are deployable to ARM-based devices running Android 1.5 or later. If you are
+      deploying native libraries to x86 and MIPS-based devices, your application must target Android
+      2.3 or later.</p>
+    </li>
+
+    <li>To ensure compatibility, an application using a native library produced with the NDK
+    <em>must</em> declare a <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>
+      &lt;uses-sdk&gt;</code></a> element in its manifest file, with an
+      <code>android:minSdkVersion</code> attribute value of "3" or higher. For example:
+
+<pre style="margin:1em;">
+&lt;manifest&gt;
+  &lt;uses-sdk android:minSdkVersion="3" /&gt;
+  ...
+&lt;/manifest&gt;
+</pre>
+    </li>
+
+    <li>If you use this NDK to create a native library that uses the OpenGL ES APIs, the
+    application containing the library can be deployed only to devices running the minimum platform
+    versions described in the table below. To ensure compatibility, make sure that your application
+    declares the proper <code>android:minSdkVersion</code> attribute value, as shown in the
+    following table.</li>
+
+    <li style="list-style: none; display: inline">
+      <table style="margin:1em;">
+        <tr>
+          <th>OpenGL ES Version Used</th>
+
+          <th>Compatible Android Platform(s)</th>
+
+          <th>Required uses-sdk Attribute</th>
+        </tr>
+
+        <tr>
+          <td>OpenGL ES 1.1</td>
+
+          <td>Android 1.6 (API Level 4) and higher</td>
+
+          <td><code>android:minSdkVersion="4"</code></td>
+        </tr>
+
+        <tr>
+          <td>OpenGL ES 2.0</td>
+
+          <td>Android 2.0 (API Level 5) and higher</td>
+
+          <td><code>android:minSdkVersion="5"</code></td>
+        </tr>
+      </table>
+
+      <p>For more information about API Level and its relationship to Android platform versions,
+      see <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a>.</p>
+    </li>
+
+    <li>Additionally, an application using the OpenGL ES APIs should declare a
+    <code>&lt;uses-feature&gt;</code> element in its manifest, with an
+    <code>android:glEsVersion</code> attribute that specifies the minimum OpenGl ES version
+    required by the application. This ensures that Google Play will show your application only
+    to users whose devices are capable of supporting your application. For example:
+      <pre style="margin:1em;">
+&lt;manifest&gt;
+<!-- Declare that the application uses the OpenGL ES 2.0 API and is designed
+     to run only on devices that support OpenGL ES 2.0 or higher. -->
+  &lt;uses-feature android:glEsVersion="0x00020000" /&gt;
+  ...
+&lt;/manifest&gt;
+</pre>
+
+      <p>For more information, see the <a href=
+      "{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;</code></a>
+      documentation.</p>
+    </li>
+
+    <li>If you use this NDK to create a native library that uses the API to access Android {@link
+    android.graphics.Bitmap} pixel buffers or utilizes native activities, the application
+    containing the library can be deployed only to devices running Android 2.2 (API level 8) or
+    higher. To ensure compatibility, make sure that your application declares <code>&lt;uses-sdk
+    android:minSdkVersion="8" /&gt;</code> attribute value in its manifest.</li>
+  </ul>
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+
+
+  
+  <h2 id="Installing">Installing the NDK</h2>
   <p>Installing the NDK on your development computer is straightforward and involves extracting the
   NDK from its download package.</p>
 
@@ -1078,51 +1339,450 @@
 
   <p>You are now ready to start working with the NDK.</p>
 
-  <h2 id="gettingstarted">Getting Started with the NDK</h2>
+  
+<h2 id="GetStarted">Getting Started with the NDK</h2>
 
-  <p>Once you've installed the NDK successfully, take a few minutes to read the documentation
-  included in the NDK. You can find the documentation in the <code>&lt;ndk&gt;/docs/</code>
-  directory. In particular, please read the OVERVIEW.HTML document completely, so that you
-  understand the intent of the NDK and how to use it.</p>
+<p>Once you've installed the NDK successfully, take a few minutes to read the documentation
+included in the NDK. You can find the documentation in the <code>&lt;ndk&gt;/docs/</code>
+directory. In particular, please read the OVERVIEW.HTML document completely, so that you
+understand the intent of the NDK and how to use it.</p>
 
-  <p>If you used a previous version of the NDK, take a moment to review the list of NDK changes in
-  the CHANGES.HTML document.</p>
+<p>If you used a previous version of the NDK, take a moment to review the list of NDK changes in
+the CHANGES.HTML document.</p>
 
-  <p>Here's the general outline of how you work with the NDK tools:</p>
+<p>Here's the general outline of how you work with the NDK tools:</p>
 
-  <ol>
-    <li>Place your native sources under <code>&lt;project&gt;/jni/...</code></li>
+<ol>
+  <li>Place your native sources under <code>&lt;project&gt;/jni/...</code></li>
 
-    <li>Create <code>&lt;project&gt;/jni/Android.mk</code> to describe your native sources to the
-    NDK build system</li>
+  <li>Create <code>&lt;project&gt;/jni/Android.mk</code> to describe your native sources to the
+  NDK build system</li>
 
-    <li>Optional: Create <code>&lt;project&gt;/jni/Application.mk</code>.</li>
+  <li>Optional: Create <code>&lt;project&gt;/jni/Application.mk</code>.</li>
 
-    <li>Build your native code by running the 'ndk-build' script from your project's directory. It
-    is located in the top-level NDK directory:
-      <pre class="no-pretty-print">cd &lt;project&gt;
+  <li>Build your native code by running the 'ndk-build' script from your project's directory. It
+  is located in the top-level NDK directory:
+    <pre class="no-pretty-print">cd &lt;project&gt;
 &lt;ndk&gt;/ndk-build
 </pre>
 
-      <p>The build tools copy the stripped, shared libraries needed by your application to the
-      proper location in the application's project directory.</p>
+    <p>The build tools copy the stripped, shared libraries needed by your application to the
+    proper location in the application's project directory.</p>
+  </li>
+
+  <li>Finally, compile your application using the SDK tools in the usual way. The SDK build tools
+  will package the shared libraries in the application's deployable <code>.apk</code> file.</li>
+</ol>
+
+<p>For complete information on all of the steps listed above, please see the documentation
+included with the NDK package.</p>
+
+
+<h3 id="Using">Using the NDK</h3>
+
+<p>The Android framework provides two ways to use native code:</p>
+
+<ul>
+  <li>Write your application using the Android framework and use JNI to access the APIs provided
+  by the Android NDK. This technique allows you to take advantage of the convenience of the
+  Android framework, but still allows you to write native code when necessary. If you use this
+  approach, your application must target specific, minimum Android platform levels, see <a
+  href="#platform-compat">Android platform compatibility</a> for more information.</li>
+
+  <li>
+    <p>Write a native activity, which allows you to implement the lifecycle callbacks in native
+    code. The Android SDK provides the {@link android.app.NativeActivity} class, which is a
+    convenience class that notifies your
+    native code of any activity lifecycle callbacks (<code>onCreate()</code>, <code>onPause()</code>,
+    <code>onResume()</code>, etc). You can implement the callbacks in your native code to handle
+    these events when they occur. Applications that use native activities must be run on Android
+    2.3 (API Level 9) or later.</p>
+
+    <p>You cannot access features such as Services and Content Providers natively, so if you want
+    to use them or any other framework API, you can still write JNI code to do so.</p>
+  </li>
+</ul>
+  
+  
+  
+  
+  
+  <h2 id="Contents">Contents of the NDK</h2>
+  
+  <p>The NDK contains the APIs, documentation, and sample
+  applications that help you write your native code. Specifically:</p>
+
+  <ul>
+    <li>A set of tools and build files used to generate native code libraries from C and C++
+    sources</li>
+
+    <li>A way to embed the corresponding native libraries into an application package file
+    (<code>.apk</code>) that can be deployed on Android devices</li>
+
+    <li>A set of native system headers and libraries that will be supported in all future versions
+    of the Android platform, starting from Android 1.5. Applications that use native activities
+    must be run on Android 2.3 or later.</li>
+
+    <li>Documentation, samples, and tutorials</li>
+  </ul>
+
+  <p>The latest release of the NDK supports the following instruction sets:</p>
+
+  <ul>
+    <li>ARMv5TE, including Thumb-1 instructions (see {@code docs/CPU-ARCH-ABIS.html} for more
+information)</li>
+
+    <li>ARMv7-A, including Thumb-2 and VFPv3-D16 instructions, with optional support for
+    NEON/VFPv3-D32 instructions (see {@code docs/CPU-ARM-NEON.html} for more information)</li>
+
+    <li>x86 instructions (see {@code docs/CPU-X86.html} for more information)</li>
+
+    <li>MIPS instructions (see {@code docs/CPU-MIPS.html} for more information)</li>
+  </ul>
+
+  <p>ARMv5TE machine code will run on all ARM-based Android devices. ARMv7-A will run only on
+  devices such as the Verizon Droid or Google Nexus One that have a compatible CPU. The main
+  difference between the two instruction sets is that ARMv7-A supports hardware FPU, Thumb-2, and
+  NEON instructions. You can target either or both of the instruction sets &mdash; ARMv5TE is the
+  default, but switching to ARMv7-A is as easy as adding a single line to the application's
+  <code>Application.mk</code> file, without needing to change anything else in the file. You can also build for
+  both architectures at the same time and have everything stored in the final <code>.apk</code>.
+  Complete information is provided in the CPU-ARCH-ABIS.HTML in the NDK package.</p>
+
+  <p>The NDK provides stable headers for libc (the C library), libm (the Math library), OpenGL ES
+  (3D graphics library), the JNI interface, and other libraries, as listed in the <a href=
+  "#Tools">Development tools</a> section.</p>
+
+
+  <h3 id="Tools">Development tools</h3>
+
+  <p>The NDK includes a set of cross-toolchains (compilers, linkers, etc..) that can generate
+  native ARM binaries on Linux, OS X, and Windows (with Cygwin) platforms.</p>
+
+  <p>It provides a set of system headers for stable native APIs that are guaranteed to be supported
+  in all later releases of the platform:</p>
+
+  <ul>
+    <li>libc (C library) headers</li>
+
+    <li>libm (math library) headers</li>
+
+    <li>JNI interface headers</li>
+
+    <li>libz (Zlib compression) headers</li>
+
+    <li>liblog (Android logging) header</li>
+
+    <li>OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers</li>
+
+    <li>libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).</li>
+
+    <li>A Minimal set of headers for C++ support</li>
+    
+    <li>OpenSL ES native audio libraries</li>
+    
+    <li>Android native application APIS</li>
+  </ul>
+
+  <p>The NDK also provides a build system that lets you work efficiently with your sources, without
+  having to handle the toolchain/platform/CPU/ABI details. You create very short build files to
+  describe which sources to compile and which Android application will use them &mdash; the build
+  system compiles the sources and places the shared libraries directly in your application
+  project.</p>
+
+  <p class="caution"><strong>Important:</strong> With the exception of the libraries listed above,
+  native system libraries in the Android platform are <em>not</em> stable and may change in future
+  platform versions. Your applications should <em>only</em> make use of the stable native system
+  libraries provided in this NDK.</p>
+
+
+
+  <h3 id="Docs">Documentation</h3>
+
+  <p>The NDK package includes a set of documentation that describes the capabilities of the NDK and
+  how to use it to create shared libraries for your Android applications. In this release, the
+  documentation is provided only in the downloadable NDK package. You can find the documentation in
+  the <code>&lt;ndk&gt;/docs/</code> directory. Included are these files (partial listing):</p>
+
+  <ul>
+    <li>
+    INSTALL.HTML &mdash; describes how to install the NDK and configure it for your host
+    system</li>
+
+    <li>OVERVIEW.HTML &mdash; provides an overview of the NDK capabilities and usage</li>
+    
+    <li>ANDROID-MK.HTML &mdash; describes the use of the Android.mk file, which defines the native
+    sources you want to compile</li>
+    
+    <li>APPLICATION-MK.HTML &mdash; describes the use of the Application.mk file, which describes
+    the native sources required by your Android application</li>    
+    <li>CPLUSPLUS-SUPPORT.HTML &mdash; describes the C++ support provided in the Android NDK</li>    
+    <li>CPU-ARCH-ABIS.HTML &mdash; a description of supported CPU architectures and how to target
+    them.</li>
+
+    <li>CPU-FEATURES.HTML &mdash; a description of the <code>cpufeatures</code> static library that
+    lets your application code detect the target device's CPU family and the optional features at
+    runtime.</li>
+
+    <li>CHANGES.HTML &mdash; a complete list of changes to the NDK across all releases.</li>
+
+    <li>DEVELOPMENT.HTML &mdash; describes how to modify the NDK and generate release packages for it</li>
+    
+    <li>HOWTO.HTML &mdash; information about common tasks associated with NDK development</li>
+    
+    <li>IMPORT-MODULE.HTML &mdash; describes how to share and reuse modules</li>
+    
+    <li>LICENSES.HTML  &mdash; information about the various open source licenses that govern the Android NDK</li>
+ 
+    <li>NATIVE-ACTIVITY.HTML &mdash; describes how to implement native activities</li>
+    
+    <li>NDK-BUILD.HTML &mdash; describes the usage of the ndk-build script</li>
+
+    <li>NDK-GDB.HTML &mdash; describes how to use the native code debugger</li>
+
+    <li>PREBUILTS.HTML &mdash; information about how shared and static prebuilt libraries work </li>
+
+    <li>STANDALONE-TOOLCHAIN.HTML &mdash; describes how to use Android NDK toolchain as a standalone
+    compiler (still in beta).</li>
+    
+    <li>SYSTEM-ISSUES.HTML &mdash; known issues in the Android system images that you should be
+    aware of, if you are developing using the NDK.</li>
+
+    <li>STABLE-APIS.HTML &mdash; a complete list of the stable APIs exposed by headers in the
+    NDK.</li>
+    
+  </ul>
+
+  <p>Additionally, the package includes detailed information about the "bionic" C library provided
+  with the Android platform that you should be aware of, if you are developing using the NDK. You
+  can find the documentation in the <code>&lt;ndk&gt;/docs/system/libc/</code> directory:</p>
+
+  <ul>
+    <li>OVERVIEW.HTML &mdash; provides an overview of the "bionic" C library and the features it
+    offers.</li>
+  </ul>
+
+  
+  
+  
+  
+<h3 id="Samples">Sample apps</h3>
+
+<p>The NDK includes sample applications that illustrate how to use native code in your Android
+  applications:</p>
+
+  <ul>
+    <li><code>hello-jni</code> &mdash; a simple application that loads a string from a native
+    method implemented in a shared library and then displays it in the application UI.</li>
+
+    <li><code>two-libs</code> &mdash; a simple application that loads a shared library dynamically
+    and calls a native method provided by the library. In this case, the method is implemented in a
+    static library imported by the shared library.</li>
+
+    <li><code>san-angeles</code> &mdash; a simple application that renders 3D graphics through the
+    native OpenGL ES APIs, while managing activity lifecycle with a {@link
+    android.opengl.GLSurfaceView} object.</li>
+
+    <li><code>hello-gl2</code> &mdash; a simple application that renders a triangle using OpenGL ES
+    2.0 vertex and fragment shaders.</li>
+
+    <li><code>hello-neon</code> &mdash; a simple application that shows how to use the
+    <code>cpufeatures</code> library to check CPU capabilities at runtime, then use NEON intrinsics
+    if supported by the CPU. Specifically, the application implements two versions of a tiny
+    benchmark for a FIR filter loop, a C version and a NEON-optimized version for devices that
+    support it.</li>
+
+    <li><code>bitmap-plasma</code> &mdash; a simple application that demonstrates how to access the
+    pixel buffers of Android {@link android.graphics.Bitmap} objects from native code, and uses
+    this to generate an old-school "plasma" effect.</li>
+
+    <li><code>native-activity</code> &mdash; a simple application that demonstrates how to use the
+    native-app-glue static library to create a native activity</li>
+
+    <li><code>native-plasma</code> &mdash; a version of bitmap-plasma implemented with a native
+    activity.</li>
+  </ul>
+
+  <p>For each sample, the NDK includes the corresponding C source code and the necessary Android.mk
+  and Application.mk files. There are located under <code>&lt;ndk&gt;/samples/&lt;name&gt;/</code>
+  and their source code can be found under <code>&lt;ndk&gt;/samples/&lt;name&gt;/jni/</code>.</p>
+
+  <p>You can build the shared libraries for the sample apps by going into
+  <code>&lt;ndk&gt;/samples/&lt;name&gt;/</code> then calling the <code>ndk-build</code> command.
+  The generated shared libraries will be located under
+  <code>&lt;ndk&gt;/samples/&lt;name&gt;/libs/armeabi/</code> for (ARMv5TE machine code) and/or
+  <code>&lt;ndk&gt;/samples/&lt;name&gt;/libs/armeabi-v7a/</code> for (ARMv7 machine code).</p>
+
+  <p>Next, build the sample Android applications that use the shared libraries:</p>
+
+  <ul>
+    <li>If you are developing in Eclipse with ADT, use the New Project Wizard to create a new
+    Android project for each sample, using the "Import from Existing Source" option and importing
+    the source from <code>&lt;ndk&gt;/samples/&lt;name&gt;/</code>. Then, set up an AVD,
+    if necessary, and build/run the application in the emulator.</li>
+
+    <li>If you are developing with Ant, use the <code>android</code> tool to create the build file
+    for each of the sample projects at <code>&lt;ndk&gt;/samples/&lt;name&gt;/</code>.
+    Then set up an AVD, if necessary, build your project in the usual way, and run it in the
+    emulator.</li>    
+    
+  </ul>
+  
+  <p>For more information about developing with the Android SDK tools and what
+  you need to do to create, build, and run your applications, see
+  the <a href="{@docRoot}tools/workflow/index.html">Overview</a>
+  section for developing on Android.</p>
+
+
+
+  <h4 id="hello-jni">Exploring the hello-jni Sample</h4>
+
+  <p>The hello-jni sample is a simple demonstration on how to use JNI from an Android application.
+  The HelloJni activity receives a string from a simple C function and displays it in a
+  TextView.</p>
+
+  <p>The main components of the sample include:</p>
+
+  <ul>
+    <li>The familiar basic structure of an Android application (an <code>AndroidManifest.xml</code>
+    file, a <code>src/</code> and <code>res</code> directories, and a main activity)</li>
+
+    <li>A <code>jni/</code> directory that includes the implemented source file for the native code
+    as well as the Android.mk file</li>
+
+    <li>A <code>tests/</code> directory that contains unit test code.</li>
+  </ul>
+
+  <ol>
+    <li>Create a new project in Eclipse from the existing sample source or use the
+    <code>android</code> tool to update the project so it generates a build.xml file that you can
+    use to build the sample.
+
+      <ul>
+        <li>In Eclipse:
+
+          <ol type="a">
+            <li>Click <strong>File &gt; New Android Project...</strong></li>
+
+            <li>Select the <strong>Create project from existing source</strong> radio button.</li>
+
+            <li>Select any API level above Android 1.5.</li>
+
+            <li>In the <strong>Location</strong> field, click <strong>Browse...</strong> and select
+            the <code>&lt;ndk-root&gt;/samples/hello-jni</code> directory.</li>
+
+            <li>Click <strong>Finish</strong>.</li>
+          </ol>
+        </li>
+
+        <li>On the command line:
+
+          <ol type="a">
+            <li>Change to the <code>&lt;ndk-root&gt;/samples/hello-jni</code> directory.</li>
+
+            <li>Run the following command to generate a build.xml file:
+              <pre class="no-pretty-print">android update project -p . -s</pre>
+            </li>
+          </ol>
+        </li>
+      </ul>
     </li>
 
-    <li>Finally, compile your application using the SDK tools in the usual way. The SDK build tools
-    will package the shared libraries in the application's deployable <code>.apk</code> file.</li>
+    <li>Compile the native code using the <code>ndk-build</code> command.
+      <pre class="no-pretty-print">
+cd &lt;ndk-root&gt;/samples/hello-jni
+&lt;ndk_root&gt;/ndk-build
+</pre>
+    </li>
+
+    <li>Build and install the application as you would a normal Android application. If you are
+    using Eclipse, run the application to build and install it on a device. If you are using Ant,
+    run the following commands from the project directory:
+      <pre class="no-pretty-print">
+ant debug
+adb install bin/HelloJni-debug.apk
+</pre>
+    </li>
   </ol>
 
-  <p>For complete information on all of the steps listed above, please see the documentation
-  included with the NDK package.</p>
+  <p>When you run the application on the device, the string <code>Hello JNI</code> should appear on
+  your device. You can explore the rest of the samples that are located in the
+  <code>&lt;ndk-root&gt;/samples</code> directory for more examples on how to use the JNI.</p>
 
-  <h2 id="samples">Sample Applications</h2>
 
-  <p>The NDK includes sample Android applications that illustrate how to use native code in your
-  Android applications. For more information, see <a href=
-  "{@docRoot}tools/sdk/ndk/overview.html#samples">Sample Applications</a>.</p>
 
-  <h2 id="forum">Discussion Forum and Mailing List</h2>
+  <h4 id="native-activity">Exploring the native-activity Sample Application</h4>
 
-  <p>If you have questions about the NDK or would like to read or contribute to discussions about
-  it, please visit the <a href="http://groups.google.com/group/android-ndk">android-ndk</a> group
-  and mailing list.</p>
+  <p>The native-activity sample provided with the Android NDK demonstrates how to use the
+  android_native_app_glue static library. This static library makes creating a native activity
+  easier by providing you with an implementation that handles your callbacks in another thread, so
+  you do not have to worry about them blocking your main UI thread. The main parts of the sample
+  are described below:</p>
+
+  <ul>
+    <li>The familiar basic structure of an Android application (an <code>AndroidManifest.xml</code>
+    file, a <code>src/</code> and <code>res</code> directories). The AndroidManifest.xml declares
+    that the application is native and specifies the .so file of the native activity. See {@link
+    android.app.NativeActivity} for the source or see the
+    <code>&lt;ndk_root&gt;/platforms/samples/native-activity/AndroidManifest.xml</code> file.</li>
+
+    <li>A <code>jni/</code> directory contains the native activity, main.c, which uses the
+    <code>android_native_app_glue.h</code> interface to implement the activity. The Android.mk that
+    describes the native module to the build system also exists here.</li>
+  </ul>
+
+  <p>To build this sample application:</p>
+
+  <ol>
+    <li>Create a new project in Eclipse from the existing sample source or use the
+    <code>android</code> tool to update the project so it generates a build.xml file that you can
+    use to build the sample.
+
+      <ul>
+        <li>In Eclipse:
+
+          <ol type="a">
+            <li>Click <strong>File &gt; New Android Project...</strong></li>
+
+            <li>Select the <strong>Create project from existing source</strong> radio button.</li>
+
+            <li>Select any API level above Android 2.3.</li>
+
+            <li>In the <strong>Location</strong> field, click <strong>Browse...</strong> and select
+            the <code>&lt;ndk-root&gt;/samples/native-activity</code> directory.</li>
+
+            <li>Click <strong>Finish</strong>.</li>
+          </ol>
+        </li>
+
+        <li>On the command line:
+
+          <ol type="a">
+            <li>Change to the <code>&lt;ndk-root&gt;/samples/native-activity</code> directory.</li>
+
+            <li>Run the following command to generate a build.xml file:
+              <pre class="no-pretty-print">
+android update project -p . -s
+</pre>
+            </li>
+          </ol>
+        </li>
+      </ul>
+    </li>
+
+    <li>Compile the native code using the <code>ndk-build</code> command.
+      <pre class="no-pretty-print">
+cd &lt;ndk-root&gt;/platforms/samples/android-9/samples/native-activity
+&lt;ndk_root&gt;/ndk-build
+</pre>
+    </li>
+
+    <li>Build and install the application as you would a normal Android application. If you are
+    using Eclipse, run the application to build and install it on a device. If you are using Ant,
+    run the following commands in the project directory, then run the application on the device:
+      <pre class="no-pretty-print">
+ant debug
+adb install bin/NativeActivity-debug.apk
+</pre>
+    </li>
+  </ol>
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index f08209b..5d9bb49 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -66,6 +66,81 @@
   <a href="#" onclick="return toggleDiv(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px"
     width="9px" />
+    SDK Tools, Revision 20</a> <em>(June 2012)</em>
+
+  <div class="toggleme">
+  <dl>
+    <dt>Dependencies:</dt>
+    <dd>
+      <ul>
+        <li>Android SDK Platform-tools revision 12 or later.</li>
+        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r20 is designed for
+        use with ADT 20.0.0 and later. If you haven't already, we highly recommend updating your
+        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.0.</li>
+        <li>If you are developing outside Eclipse, you must have
+          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
+    </ul>
+    </dd>
+    <dt>General notes:</dt>
+    <dd>
+      <ul>
+        <li>Added new Device Monitor application, grouping Android debugging tools into a
+single application, including ddms, traceview, hierarchyviewer and Tracer for GLES. (<a
+href="{@docRoot}tools/gltracer.html">more info</a>)</li>
+        <li>Added new System Trace new tool for tracing Android system activity. This tool allow you
+to capture a slice of system activity, plus additional information tagged from the <strong>Settings
+&gt; Developer Options &gt; Monitoring: Enable traces</strong> or with specific calls added to your
+application code. (<a href="{@docRoot}tools/systrace.html">more info</a>)</li>
+        </li>
+        <li>Build System
+          <ul>
+            <li>Added automatic merging of library project manifest files into the including
+project's manifest. Enable this feature with the {@code manifestmerger.enabled} property.</li>
+            <li>Added automatic ProGuard support for the {@code aapt -G} flag. This change causes
+the build system to generate a temporary ProGuard keep-rules file containing classes that
+are referenced from XML files (such as custom views) and pass this to ProGuard at shrink-time. This
+can make the resulting APK much smaller when using just a small portion of a large library project
+(such as the Android Support library), since the catch-all rules to keep all custom views from the
+default ProGuard configuration file have also been removed.</li>
+            <li>Added two ProGuard configuration files for use in projects: {@code 
+proguard-android-optimize.txt} which enables optimizations and {@code proguard-android.txt} which
+disables them.</li>
+          </ul>
+        </li>
+        <li>SDK Manager
+          <ul>
+            <li>Improved caching to reduce downloading of repository definitions.</li>
+            <li>Added <strong>Tools > Manage Add-on Sites</strong> option to allow deactivation of
+      third-party sites for improved performance (e.g., if one or more sites are temporarily slow to
+      load.)</li>
+            <li>Added settings for the SDK Manager download cache (<strong>SDK Manager > Tools >
+Options</strong>).</li>
+          </ul>
+        </li>
+      </ul>
+    </dd>
+    <dt>Bug fixes:</dt>
+    <dd>
+      <ul>
+        <li>Build
+          <ul>
+            <li>Fixed problem where test projects did not have access to the full classpath of tested
+projects, including Library Projects and third-party jars.</li>
+            <li>Fixed deployment logic so that applications with embedded tests can now be deployed
+and tested like test applications, including code coverage information.</li>
+            <li>Fixed Ant support for testing projects with libraries.</li>
+          </ul>
+        </li>
+      </ul>
+    </dd>
+    </dl>
+  </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px"
+    width="9px" />
     SDK Tools, Revision 19</a> <em>(April 2012)</em>
 
   <div class="toggleme">
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index 27fbd2d..c7cdded 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -25,6 +25,8 @@
       </li>
           <li><a href="<?cs var:toroot ?>sdk/exploring.html">
               <span class="en">Exploring the SDK</span></a></li>
+      <li><a href="<?cs var:toroot ?>tools/sdk/ndk/index.html">NDK</a>
+      </li>
     </ul>
   </li>
   
@@ -128,6 +130,7 @@
       <li><a href="<?cs var:toroot ?>tools/help/adt.html">ADT</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/android.html">android</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/bmgr.html">bmgr</a>
+      <li><a href="<?cs var:toroot ?>tools/help/monitor.html">Device Monitor</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/dmtracedump.html">dmtracedump</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/draw9patch.html">Draw 9-Patch</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/emulator.html">Emulator</a></li>
@@ -151,6 +154,7 @@
         </ul>
       </li>
        <li><a href="<?cs var:toroot ?>tools/help/proguard.html">ProGuard</a></li>
+       <li><a href="<?cs var:toroot ?>tools/help/gltracer.html">Tracer for OpenGL ES</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/traceview.html">Traceview</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/zipalign.html">zipalign</a></li>
     </ul>
@@ -169,15 +173,6 @@
       <!--
       <li><a href="<?cs var:toroot ?>tools/sdk/addons.html"><span class="en">Add-ons</span></a></li>
       -->
-      <li class="nav-section">
-        <div class="nav-section-header">
-        <a href="<?cs var:toroot ?>tools/sdk/ndk/index.html">
-          <span class="en">NDK</span></a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/sdk/ndk/overview.html">What is the NDK?</a></li>
-        </ul>
-      </li>
       <li><a href="<?cs var:toroot ?>tools/revisions/platforms.html"><span
 class="en">Platforms</span></a></li>
     </ul>
@@ -197,12 +192,30 @@
   </li>
 
   
-  
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot
 ?>tools/samples/index.html"><span class="en">Samples</span></a></div>
   </li>
+
   
+  <li class="nav-section">
+    <div class="nav-section-header">
+    <a href="<?cs var:toroot ?>tools/adk/index.html">
+      <span class="en">ADK</span></a>
+    </div>
+    <ul>
+      <li><a href="<?cs var:toroot ?>tools/adk/adk2.html">ADK 2012 Guide</a></li>
+      <li><a href="<?cs var:toroot ?>tools/adk/adk.html">ADK 2011 Guide</a></li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+        <a href="<?cs var:toroot ?>tools/adk/aoa.html">Android Open Accessory Protocol</a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>tools/adk/aoa2.html">AOA 2.0</a></li>
+        </ul>
+      </li>
+    </ul>
+  </li>
   
 </ul><!-- nav -->
 
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java
index c365e4c..7532d79 100755
--- a/media/java/android/mtp/MtpDatabase.java
+++ b/media/java/android/mtp/MtpDatabase.java
@@ -933,10 +933,10 @@
                 // recursive case - delete all children first
                 Uri uri = Files.getMtpObjectsUri(mVolumeName);
                 int count = mMediaProvider.delete(uri,
-                        // the 'like' makes it use the index, the 'lower()' makes it correct
-                        // when the path contains sqlite wildcard characters
-                        "_data LIKE ? AND lower(substr(_data,?))=lower(?)",
-                        new String[] { path + "/%", "" + path.length() + 1, path + "/"});
+                    // the 'like' makes it use the index, the 'lower()' makes it correct
+                    // when the path contains sqlite wildcard characters
+                    "_data LIKE ?1 AND lower(substr(_data,1,?2))=lower(?3)",
+                    new String[] { path + "/%",Integer.toString(path.length() + 1), path + "/"});
             }
 
             Uri uri = Files.getMtpObjectsUri(mVolumeName, handle);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index b0939de..2594167 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -63,7 +63,7 @@
     // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
     // is properly propagated through your change.  Not doing so will result in a loss of user
     // settings.
-    private static final int DATABASE_VERSION = 78;
+    private static final int DATABASE_VERSION = 79;
 
     private Context mContext;
 
@@ -1054,6 +1054,23 @@
             upgradeVersion = 78;
         }
 
+        if (upgradeVersion == 78) {
+            // The JavaScript based screen-reader URL changes in JellyBean.
+            db.beginTransaction();
+            SQLiteStatement stmt = null;
+            try {
+                stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)"
+                        + " VALUES(?,?);");
+                loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL,
+                        R.string.def_accessibility_screen_reader_url);
+                db.setTransactionSuccessful();
+            } finally {
+                db.endTransaction();
+                if (stmt != null) stmt.close();
+            }
+            upgradeVersion = 79;
+        }
+
         // *** Remember to update DATABASE_VERSION above!
 
         if (upgradeVersion != currentVersion) {
diff --git a/packages/SystemUI/res/layout/system_bar.xml b/packages/SystemUI/res/layout/system_bar.xml
index a33d638..c13b113 100644
--- a/packages/SystemUI/res/layout/system_bar.xml
+++ b/packages/SystemUI/res/layout/system_bar.xml
@@ -103,7 +103,7 @@
     <FrameLayout
         android:id="@+id/bar_shadow_holder"
         android:layout_width="match_parent"
-        android:layout_height="@*android:dimen/status_bar_height"
+        android:layout_height="@*android:dimen/system_bar_height"
         android:layout_gravity="bottom"
         >
         <!-- lights out shade -->
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index c09e4c4..9448bbf 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -190,8 +190,7 @@
             sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
 
             Intent chooserIntent = Intent.createChooser(sharingIntent, null);
-            chooserIntent.addFlags(Intent.FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS
-                    | Intent.FLAG_ACTIVITY_CLEAR_TASK 
+            chooserIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK 
                     | Intent.FLAG_ACTIVITY_NEW_TASK);
 
             mNotificationBuilder.addAction(R.drawable.ic_menu_share,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 08016df..04cff96 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -155,6 +155,35 @@
         }
     };
 
+    private RemoteViews.OnClickHandler mOnClickHandler = new RemoteViews.OnClickHandler() {
+        @Override
+        public boolean onClickHandler(View view, PendingIntent pendingIntent, Intent fillInIntent) {
+            final boolean isActivity = pendingIntent.isActivity();
+            if (isActivity) {
+                try {
+                    // The intent we are sending is for the application, which
+                    // won't have permission to immediately start an activity after
+                    // the user switches to home.  We know it is safe to do at this
+                    // point, so make sure new activity switches are now allowed.
+                    ActivityManagerNative.getDefault().resumeAppSwitches();
+                    // Also, notifications can be launched from the lock screen,
+                    // so dismiss the lock screen when the activity starts.
+                    ActivityManagerNative.getDefault().dismissKeyguardOnNextActivity();
+                } catch (RemoteException e) {
+                }
+            }
+
+            boolean handled = super.onClickHandler(view, pendingIntent, fillInIntent);
+
+            if (isActivity && handled) {
+                // close the shade if it was open
+                animateCollapse(CommandQueue.FLAG_EXCLUDE_NONE);
+                visibilityChanged(false);
+            }
+            return handled;
+        }
+    };
+
     public void start() {
         mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
                 .getDefaultDisplay();
@@ -548,8 +577,10 @@
         View expandedLarge = null;
         Exception exception = null;
         try {
+            oneU.setOnClickHandler(mOnClickHandler);
             expandedOneU = oneU.apply(mContext, adaptive);
             if (large != null) {
+                large.setOnClickHandler(mOnClickHandler);
                 expandedLarge = large.apply(mContext, adaptive);
             }
         }
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 756a3df..25da642 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -65,7 +65,6 @@
 import com.android.internal.widget.PointerLocationView;
 
 import android.service.dreams.IDreamManager;
-import android.speech.RecognizerIntent;
 import android.util.DisplayMetrics;
 import android.util.EventLog;
 import android.util.Log;
@@ -160,6 +159,7 @@
     static final boolean localLOGV = false;
     static final boolean DEBUG_LAYOUT = false;
     static final boolean DEBUG_INPUT = false;
+    static final boolean DEBUG_STARTING_WINDOW = false;
     static final boolean SHOW_STARTING_ANIMATIONS = true;
     static final boolean SHOW_PROCESSES_ON_ALT_MENU = false;
 
@@ -279,6 +279,7 @@
     WindowManagerFuncs mWindowManagerFuncs;
     LocalPowerManager mPowerManager;
     IStatusBarService mStatusBarService;
+    final Object mServiceAquireLock = new Object();
     Vibrator mVibrator; // Vibrator for giving feedback of orientation changes
     SearchManager mSearchManager;
 
@@ -597,6 +598,16 @@
     }
     MyOrientationListener mOrientationListener;
 
+    IStatusBarService getStatusBarService() {
+        synchronized (mServiceAquireLock) {
+            if (mStatusBarService == null) {
+                mStatusBarService = IStatusBarService.Stub.asInterface(
+                        ServiceManager.getService("statusbar"));
+            }
+            return mStatusBarService;
+        }
+    }
+
     /*
      * We always let the sensor be switched on by default except when
      * the user has explicitly disabled sensor based rotation or when the
@@ -790,9 +801,14 @@
             showOrHideRecentAppsDialog(RECENT_APPS_BEHAVIOR_SHOW_OR_DISMISS);
         } else if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_RECENT_SYSTEM_UI) {
             try {
-                mStatusBarService.toggleRecentApps();
+                IStatusBarService statusbar = getStatusBarService();
+                if (statusbar != null) {
+                    statusbar.toggleRecentApps();
+                }
             } catch (RemoteException e) {
                 Slog.e(TAG, "RemoteException when showing recent apps", e);
+                // re-acquire status bar service next time it is needed.
+                mStatusBarService = null;
             }
         }
     }
@@ -1454,8 +1470,9 @@
 
         try {
             Context context = mContext;
-            //Log.i(TAG, "addStartingWindow " + packageName + ": nonLocalizedLabel="
-            //        + nonLocalizedLabel + " theme=" + Integer.toHexString(theme));
+            if (DEBUG_STARTING_WINDOW) Slog.d(TAG, "addStartingWindow " + packageName
+                    + ": nonLocalizedLabel=" + nonLocalizedLabel + " theme="
+                    + Integer.toHexString(theme));
             if (theme != context.getThemeResId() || labelRes != 0) {
                 try {
                     context = context.createPackageContext(packageName, 0);
@@ -1522,7 +1539,7 @@
                 return null;
             }
 
-            if (localLOGV) Log.v(
+            if (DEBUG_STARTING_WINDOW) Slog.d(
                 TAG, "Adding starting window for " + packageName
                 + " / " + appToken + ": "
                 + (view.getParent() != null ? view : null));
@@ -1547,11 +1564,11 @@
 
     /** {@inheritDoc} */
     public void removeStartingWindow(IBinder appToken, View window) {
-        // RuntimeException e = new RuntimeException();
-        // Log.i(TAG, "remove " + appToken + " " + window, e);
-
-        if (localLOGV) Log.v(
-            TAG, "Removing starting window for " + appToken + ": " + window);
+        if (DEBUG_STARTING_WINDOW) {
+            RuntimeException e = new RuntimeException("here");
+            e.fillInStackTrace();
+            Log.v(TAG, "Removing starting window for " + appToken + ": " + window, e);
+        }
 
         if (window != null) {
             WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
@@ -1751,9 +1768,14 @@
                 mHomeLongPressed = false;
                 if (!homeWasLongPressed) {
                     try {
-                        mStatusBarService.cancelPreloadRecentApps();
+                        IStatusBarService statusbar = getStatusBarService();
+                        if (statusbar != null) {
+                            statusbar.cancelPreloadRecentApps();
+                        }
                     } catch (RemoteException e) {
                         Slog.e(TAG, "RemoteException when showing recent apps", e);
+                        // re-acquire status bar service next time it is needed.
+                        mStatusBarService = null;
                     }
 
                     mHomePressed = false;
@@ -1804,9 +1826,14 @@
             if (down) {
                 if (!mHomePressed && mLongPressOnHomeBehavior == LONG_PRESS_HOME_RECENT_SYSTEM_UI) {
                     try {
-                        mStatusBarService.preloadRecentApps();
+                        IStatusBarService statusbar = getStatusBarService();
+                        if (statusbar != null) {
+                            statusbar.preloadRecentApps();
+                        }
                     } catch (RemoteException e) {
                         Slog.e(TAG, "RemoteException when preloading recent apps", e);
+                        // re-acquire status bar service next time it is needed.
+                        mStatusBarService = null;
                     }
                 }
                 if (repeatCount == 0) {
@@ -2901,10 +2928,14 @@
                         changes |= FINISH_LAYOUT_REDO_LAYOUT;
 
                         mHandler.post(new Runnable() { public void run() {
-                            if (mStatusBarService != null) {
-                                try {
-                                    mStatusBarService.collapse();
-                                } catch (RemoteException ex) {}
+                            try {
+                                IStatusBarService statusbar = getStatusBarService();
+                                if (statusbar != null) {
+                                    statusbar.collapse();
+                                }
+                            } catch (RemoteException ex) {
+                                // re-acquire status bar service next time it is needed.
+                                mStatusBarService = null;
                             }
                         }});
                     } else if (DEBUG_LAYOUT) {
@@ -4342,18 +4373,15 @@
         mFocusedApp = mFocusedWindow.getAppToken();
         mHandler.post(new Runnable() {
                 public void run() {
-                    if (mStatusBarService == null) {
-                        mStatusBarService = IStatusBarService.Stub.asInterface(
-                                ServiceManager.getService("statusbar"));
-                    }
-                    if (mStatusBarService != null) {
-                        try {
-                            mStatusBarService.setSystemUiVisibility(visibility, 0xffffffff);
-                            mStatusBarService.topAppWindowChanged(needsMenu);
-                        } catch (RemoteException e) {
-                            // not much to be done
-                            mStatusBarService = null;
+                    try {
+                        IStatusBarService statusbar = getStatusBarService();
+                        if (statusbar != null) {
+                            statusbar.setSystemUiVisibility(visibility, 0xffffffff);
+                            statusbar.topAppWindowChanged(needsMenu);
                         }
+                    } catch (RemoteException e) {
+                        // re-acquire status bar service next time it is needed.
+                        mStatusBarService = null;
                     }
                 }
             });
diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java
index 0f5ad66..7609613 100644
--- a/services/java/com/android/server/DevicePolicyManagerService.java
+++ b/services/java/com/android/server/DevicePolicyManagerService.java
@@ -2118,16 +2118,6 @@
             }
 
             pw.println(" ");
-            pw.print("  mActivePasswordQuality=0x");
-                    pw.println(Integer.toHexString(mActivePasswordQuality));
-            pw.print("  mActivePasswordLength="); pw.println(mActivePasswordLength);
-            pw.print("  mActivePasswordUpperCase="); pw.println(mActivePasswordUpperCase);
-            pw.print("  mActivePasswordLowerCase="); pw.println(mActivePasswordLowerCase);
-            pw.print("  mActivePasswordLetters="); pw.println(mActivePasswordLetters);
-            pw.print("  mActivePasswordNumeric="); pw.println(mActivePasswordNumeric);
-            pw.print("  mActivePasswordSymbols="); pw.println(mActivePasswordSymbols);
-            pw.print("  mActivePasswordNonLetter="); pw.println(mActivePasswordNonLetter);
-            pw.print("  mFailedPasswordAttempts="); pw.println(mFailedPasswordAttempts);
             pw.print("  mPasswordOwner="); pw.println(mPasswordOwner);
         }
     }
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 01bb2bc..c32f1da 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -1040,7 +1040,7 @@
                 mWakeLockState = mLocks.gatherState();
                 // goes in the middle to reduce flicker
                 if ((wl.flags & PowerManager.ON_AFTER_RELEASE) != 0) {
-                    userActivity(SystemClock.uptimeMillis(), -1, false, OTHER_EVENT, false);
+                    userActivity(SystemClock.uptimeMillis(), -1, false, OTHER_EVENT, false, true);
                 }
                 setPowerState(mWakeLockState | mUserState);
             }
@@ -2489,7 +2489,7 @@
 
     public void userActivityWithForce(long time, boolean noChangeLights, boolean force) {
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
-        userActivity(time, -1, noChangeLights, OTHER_EVENT, force);
+        userActivity(time, -1, noChangeLights, OTHER_EVENT, force, false);
     }
 
     public void userActivity(long time, boolean noChangeLights) {
@@ -2502,15 +2502,15 @@
             return;
         }
 
-        userActivity(time, -1, noChangeLights, OTHER_EVENT, false);
+        userActivity(time, -1, noChangeLights, OTHER_EVENT, false, false);
     }
 
     public void userActivity(long time, boolean noChangeLights, int eventType) {
-        userActivity(time, -1, noChangeLights, eventType, false);
+        userActivity(time, -1, noChangeLights, eventType, false, false);
     }
 
     public void userActivity(long time, boolean noChangeLights, int eventType, boolean force) {
-        userActivity(time, -1, noChangeLights, eventType, force);
+        userActivity(time, -1, noChangeLights, eventType, force, false);
     }
 
     /*
@@ -2520,11 +2520,11 @@
     public void clearUserActivityTimeout(long now, long timeout) {
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
         Slog.i(TAG, "clearUserActivity for " + timeout + "ms from now");
-        userActivity(now, timeout, false, OTHER_EVENT, false);
+        userActivity(now, timeout, false, OTHER_EVENT, false, false);
     }
 
     private void userActivity(long time, long timeoutOverride, boolean noChangeLights,
-            int eventType, boolean force) {
+            int eventType, boolean force, boolean ignoreIfScreenOff) {
 
         if (((mPokey & POKE_LOCK_IGNORE_TOUCH_EVENTS) != 0) && (eventType == TOUCH_EVENT)) {
             if (false) {
@@ -2548,6 +2548,11 @@
                 Slog.d(TAG, "ignoring user activity while turning off screen");
                 return;
             }
+            // ignore if the caller doesn't want this to allow the screen to turn
+            // on, and the screen is currently off.
+            if (ignoreIfScreenOff && (mPowerState & SCREEN_ON_BIT) == 0) {
+                return;
+            }
             // Disable proximity sensor if if user presses power key while we are in the
             // "waiting for proximity sensor to go negative" state.
             if (mProximitySensorActive && mProximityWakeLockCount == 0) {
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 63455ee..f482552 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -3577,8 +3577,7 @@
         
         for (int i=mMainStack.mHistory.size()-1; i>=0; i--) {
             ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i);
-            if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0
-                    && (r.intent.getFlags()&Intent.FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS) == 0) {
+            if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) {
                 r.stack.finishActivityLocked(r, i,
                         Activity.RESULT_CANCELED, null, "close-sys");
             }
@@ -4573,6 +4572,21 @@
         return false;
     }
 
+    public boolean isIntentSenderAnActivity(IIntentSender pendingResult) {
+        if (!(pendingResult instanceof PendingIntentRecord)) {
+            return false;
+        }
+        try {
+            PendingIntentRecord res = (PendingIntentRecord)pendingResult;
+            if (res.key.type == ActivityManager.INTENT_SENDER_ACTIVITY) {
+                return true;
+            }
+            return false;
+        } catch (ClassCastException e) {
+        }
+        return false;
+    }
+
     public void setProcessLimit(int max) {
         enforceCallingPermission(android.Manifest.permission.SET_PROCESS_LIMIT,
                 "setProcessLimit()");
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index e2d6d98..b276494 100755
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -1129,6 +1129,11 @@
             resumeTopActivityLocked(prev);
         } else {
             checkReadyForSleepLocked();
+            if (topRunningActivityLocked(null) == null) {
+                // If there are no more activities available to run, then
+                // do resume anyway to start something.
+                resumeTopActivityLocked(null);
+            }
         }
         
         if (prev != null) {
@@ -2559,10 +2564,6 @@
             mDismissKeyguardOnNextActivity = false;
             mService.mWindowManager.dismissKeyguard();
         }
-        if (err >= ActivityManager.START_SUCCESS &&
-                (launchFlags&Intent.FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS) != 0) {
-            mService.closeSystemDialogsLocked(Process.myUid(), "launch");
-        }
         return err;
     }
   
@@ -3413,6 +3414,7 @@
         IApplicationThread sendThumbnail = null;
         boolean booting = false;
         boolean enableScreen = false;
+        boolean activityRemoved = false;
 
         synchronized (mService) {
             ActivityRecord r = ActivityRecord.forToken(token);
@@ -3519,7 +3521,7 @@
         for (i=0; i<NF; i++) {
             ActivityRecord r = (ActivityRecord)finishes.get(i);
             synchronized (mService) {
-                destroyActivityLocked(r, true, false, "finish-idle");
+                activityRemoved = destroyActivityLocked(r, true, false, "finish-idle");
             }
         }
 
@@ -3541,6 +3543,10 @@
             mService.enableScreenAfterBoot();
         }
 
+        if (activityRemoved) {
+            resumeTopActivityLocked(null);
+        }
+
         return res;
     }
 
@@ -3780,7 +3786,11 @@
                 || prevState == ActivityState.INITIALIZING) {
             // If this activity is already stopped, we can just finish
             // it right now.
-            return destroyActivityLocked(r, true, true, "finish-imm") ? null : r;
+            boolean activityRemoved = destroyActivityLocked(r, true, true, "finish-imm");
+            if (activityRemoved) {
+                resumeTopActivityLocked(null);
+            }
+            return activityRemoved ? null : r;
         } else {
             // Need to go through the full pause cycle to get this
             // activity into the stopped state and then finish it.
@@ -3844,6 +3854,10 @@
         }
 
         // Get rid of any pending idle timeouts.
+        removeTimeoutsForActivityLocked(r);
+    }
+
+    private void removeTimeoutsForActivityLocked(ActivityRecord r) {
         mHandler.removeMessages(PAUSE_TIMEOUT_MSG, r);
         mHandler.removeMessages(STOP_TIMEOUT_MSG, r);
         mHandler.removeMessages(IDLE_TIMEOUT_MSG, r);
@@ -3897,6 +3911,7 @@
 
     final void destroyActivitiesLocked(ProcessRecord owner, boolean oomAdj, String reason) {
         boolean lastIsOpaque = false;
+        boolean activityRemoved = false;
         for (int i=mHistory.size()-1; i>=0; i--) {
             ActivityRecord r = mHistory.get(i);
             if (r.finishing) {
@@ -3920,9 +3935,14 @@
                 if (DEBUG_SWITCH) Slog.v(TAG, "Destroying " + r + " in state " + r.state
                         + " resumed=" + mResumedActivity
                         + " pausing=" + mPausingActivity);
-                destroyActivityLocked(r, true, oomAdj, reason);
+                if (destroyActivityLocked(r, true, oomAdj, reason)) {
+                    activityRemoved = true;
+                }
             }
         }
+        if (activityRemoved) {
+            resumeTopActivityLocked(null);
+        }
     }
 
     /**
@@ -4027,23 +4047,28 @@
 
     final void activityDestroyed(IBinder token) {
         synchronized (mService) {
-            ActivityRecord r = ActivityRecord.forToken(token);
-            if (r != null) {
-                mHandler.removeMessages(DESTROY_TIMEOUT_MSG, r);
-            }
-            
-            int index = indexOfActivityLocked(r);
-            if (index >= 0) {
-                if (r.state == ActivityState.DESTROYING) {
-                    final long origId = Binder.clearCallingIdentity();
-                    removeActivityFromHistoryLocked(r);
-                    Binder.restoreCallingIdentity(origId);
+            final long origId = Binder.clearCallingIdentity();
+            try {
+                ActivityRecord r = ActivityRecord.forToken(token);
+                if (r != null) {
+                    mHandler.removeMessages(DESTROY_TIMEOUT_MSG, r);
                 }
+
+                int index = indexOfActivityLocked(r);
+                if (index >= 0) {
+                    if (r.state == ActivityState.DESTROYING) {
+                        cleanUpActivityLocked(r, true, true);
+                        removeActivityFromHistoryLocked(r);
+                    }
+                }
+                resumeTopActivityLocked(null);
+            } finally {
+                Binder.restoreCallingIdentity(origId);
             }
         }
     }
     
-    private static void removeHistoryRecordsForAppLocked(ArrayList list, ProcessRecord app) {
+    private void removeHistoryRecordsForAppLocked(ArrayList list, ProcessRecord app) {
         int i = list.size();
         if (localLOGV) Slog.v(
             TAG, "Removing app " + app + " from list " + list
@@ -4056,6 +4081,7 @@
             if (r.app == app) {
                 if (localLOGV) Slog.v(TAG, "Removing this entry!");
                 list.remove(i);
+                removeTimeoutsForActivityLocked(r);
             }
         }
     }
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 9a79f86..e20cd02 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -1087,7 +1087,8 @@
                     /*
                      * If the package is scanned, it's not erased.
                      */
-                    if (mPackages.containsKey(ps.name)) {
+                    final PackageParser.Package scannedPkg = mPackages.get(ps.name);
+                    if (scannedPkg != null) {
                         /*
                          * If the system app is both scanned and in the
                          * disabled packages list, then it must have been
@@ -1096,7 +1097,9 @@
                          * application can be scanned.
                          */
                         if (mSettings.isDisabledSystemPackageLPr(ps.name)) {
-                            mPackages.remove(ps.name);
+                            Slog.i(TAG, "Expecting better updatd system app for " + ps.name
+                                    + "; removing system app");
+                            removePackageLI(scannedPkg, true);
                         }
 
                         continue;
@@ -8626,6 +8629,10 @@
                     }
                     pw.print("  ["); pw.print(entry.getKey()); pw.println("]:");
                     pw.print("    "); pw.println(p.toString());
+                    if (p.info != null && p.info.applicationInfo != null) {
+                        final String appInfo = p.info.applicationInfo.toString();
+                        pw.print("      applicationInfo="); pw.println(appInfo);
+                    }
                 }
             }
             
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java
index 91cd458..d031686 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/java/com/android/server/pm/Settings.java
@@ -2459,6 +2459,7 @@
             pw.print("    nativeLibraryPath="); pw.println(ps.nativeLibraryPathString);
             pw.print("    versionCode="); pw.println(ps.versionCode);
             if (ps.pkg != null) {
+                pw.print("    applicationInfo="); pw.println(ps.pkg.applicationInfo.toString());
                 pw.print("    flags="); printFlags(pw, ps.pkg.applicationInfo.flags, FLAG_DUMP_SPEC); pw.println();
                 pw.print("    versionName="); pw.println(ps.pkg.mVersionName);
                 pw.print("    dataDir="); pw.println(ps.pkg.applicationInfo.dataDir);
@@ -2592,6 +2593,10 @@
                     pw.print("    compat name=");
                     pw.println(ps.name);
                 }
+                if (ps.pkg != null && ps.pkg.applicationInfo != null) {
+                    pw.print("    applicationInfo=");
+                    pw.println(ps.pkg.applicationInfo.toString());
+                }
                 pw.print("    userId=");
                 pw.println(ps.appId);
                 pw.print("    sharedUser=");
diff --git a/services/java/com/android/server/wm/AppWindowAnimator.java b/services/java/com/android/server/wm/AppWindowAnimator.java
index 1953ad7..13e8bc5 100644
--- a/services/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/java/com/android/server/wm/AppWindowAnimator.java
@@ -35,6 +35,10 @@
     // AppWindowToken animations.
     int animLayerAdjustment;
 
+    // Propagated from AppWindowToken.allDrawn, to determine when
+    // the state changes.
+    boolean allDrawn;
+
     // Special surface for thumbnail animation.
     Surface thumbnail;
     int thumbnailTransactionSeq;
diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/java/com/android/server/wm/AppWindowToken.java
index bf35154..6ecbb8e 100644
--- a/services/java/com/android/server/wm/AppWindowToken.java
+++ b/services/java/com/android/server/wm/AppWindowToken.java
@@ -241,12 +241,18 @@
             pw.print(prefix); pw.print("paused="); pw.println(paused);
         }
         if (numInterestingWindows != 0 || numDrawnWindows != 0
-                || inPendingTransaction || allDrawn) {
+                || allDrawn || mAppAnimator.allDrawn) {
             pw.print(prefix); pw.print("numInterestingWindows=");
                     pw.print(numInterestingWindows);
                     pw.print(" numDrawnWindows="); pw.print(numDrawnWindows);
                     pw.print(" inPendingTransaction="); pw.print(inPendingTransaction);
-                    pw.print(" allDrawn="); pw.println(allDrawn);
+                    pw.print(" allDrawn="); pw.print(allDrawn);
+                    pw.print(" (animator="); pw.print(mAppAnimator.allDrawn);
+                    pw.println(")");
+        }
+        if (inPendingTransaction) {
+            pw.print(prefix); pw.print("inPendingTransaction=");
+                    pw.println(inPendingTransaction);
         }
         if (startingData != null || removed || firstWindowDrawn) {
             pw.print(prefix); pw.print("startingData="); pw.print(startingData);
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index 758b6e7..fdd8aab 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -38,7 +38,6 @@
     ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>();
 
     boolean mAnimating;
-    boolean mTokenMayBeDrawn;
     boolean mForceHiding;
     WindowState mWindowAnimationBackground;
     int mWindowAnimationBackgroundColor;
@@ -57,7 +56,7 @@
 
     /** Skip repeated AppWindowTokens initialization. Note that AppWindowsToken's version of this
      * is a long initialized to Long.MIN_VALUE so that it doesn't match this value on startup. */
-    private int mTransactionSequence;
+    private int mAnimTransactionSequence;
 
     /** The one and only screen rotation if one is happening */
     ScreenRotationAnimation mScreenRotationAnimation = null;
@@ -194,7 +193,7 @@
     }
 
     private void updateWindowsAndWallpaperLocked() {
-        ++mTransactionSequence;
+        ++mAnimTransactionSequence;
 
         ArrayList<WindowStateAnimator> unForceHiding = null;
         boolean wallpaperInUnForceHiding = false;
@@ -332,59 +331,22 @@
             }
 
             final AppWindowToken atoken = win.mAppToken;
-            if (atoken != null && (!atoken.allDrawn || atoken.mAppAnimator.freezingScreen)) {
-                if (atoken.lastTransactionSequence != mTransactionSequence) {
-                    atoken.lastTransactionSequence = mTransactionSequence;
-                    atoken.numInterestingWindows = atoken.numDrawnWindows = 0;
-                    atoken.startingDisplayed = false;
-                }
-                if ((win.isOnScreen() || winAnimator.mAttrType
-                        == WindowManager.LayoutParams.TYPE_BASE_APPLICATION)
-                        && !win.mExiting && !win.mDestroying) {
-                    if (WindowManagerService.DEBUG_VISIBILITY ||
-                            WindowManagerService.DEBUG_ORIENTATION) {
-                        Slog.v(TAG, "Eval win " + win + ": isDrawn=" + win.isDrawnLw()
-                                + ", isAnimating=" + winAnimator.isAnimating());
-                        if (!win.isDrawnLw()) {
-                            Slog.v(TAG, "Not displayed: s=" + winAnimator.mSurface
-                                    + " pv=" + win.mPolicyVisibility
-                                    + " mDrawState=" + winAnimator.mDrawState
-                                    + " ah=" + win.mAttachedHidden
-                                    + " th=" + atoken.hiddenRequested
-                                    + " a=" + winAnimator.mAnimating);
+            if (winAnimator.mDrawState == WindowStateAnimator.READY_TO_SHOW) {
+                if (atoken == null || atoken.allDrawn) {
+                    if (winAnimator.performShowLocked()) {
+                        mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
+                        if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
+                            mService.debugLayoutRepeats("updateWindowsAndWallpaperLocked 5",
+                                mPendingLayoutChanges);
                         }
                     }
-                    if (win != atoken.startingWindow) {
-                        if (!atoken.mAppAnimator.freezingScreen || !win.mAppFreezing) {
-                            atoken.numInterestingWindows++;
-                            if (win.isDrawnLw()) {
-                                atoken.numDrawnWindows++;
-                                if (WindowManagerService.DEBUG_VISIBILITY ||
-                                        WindowManagerService.DEBUG_ORIENTATION) Slog.v(TAG,
-                                        "tokenMayBeDrawn: " + atoken
-                                        + " freezingScreen=" + atoken.mAppAnimator.freezingScreen
-                                        + " mAppFreezing=" + win.mAppFreezing);
-                                mTokenMayBeDrawn = true;
-                            }
-                        }
-                    } else if (win.isDrawnLw()) {
-                        atoken.startingDisplayed = true;
-                    }
-                }
-            } else if (winAnimator.mDrawState == WindowStateAnimator.READY_TO_SHOW) {
-                if (winAnimator.performShowLocked()) {
-                    mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
-                    if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
-                        mService.debugLayoutRepeats("updateWindowsAndWallpaperLocked 5",
-                            mPendingLayoutChanges);
-                    }
                 }
             }
             final AppWindowAnimator appAnimator =
                     atoken == null ? null : atoken.mAppAnimator;
             if (appAnimator != null && appAnimator.thumbnail != null) {
-                if (appAnimator.thumbnailTransactionSeq != mTransactionSequence) {
-                    appAnimator.thumbnailTransactionSeq = mTransactionSequence;
+                if (appAnimator.thumbnailTransactionSeq != mAnimTransactionSequence) {
+                    appAnimator.thumbnailTransactionSeq = mAnimTransactionSequence;
                     appAnimator.thumbnailLayer = 0;
                 }
                 if (appAnimator.thumbnailLayer < winAnimator.mAnimLayer) {
@@ -414,39 +376,32 @@
         final int NT = appTokens.size();
         for (int i=0; i<NT; i++) {
             AppWindowToken wtoken = appTokens.get(i);
-            if (wtoken.mAppAnimator.freezingScreen) {
-                int numInteresting = wtoken.numInterestingWindows;
-                if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
-                    if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
-                            "allDrawn: " + wtoken
-                            + " interesting=" + numInteresting
-                            + " drawn=" + wtoken.numDrawnWindows);
-                    wtoken.mAppAnimator.showAllWindowsLocked();
-                    mService.unsetAppFreezingScreenLocked(wtoken, false, true);
-                    if (WindowManagerService.DEBUG_ORIENTATION) Slog.i(TAG,
-                            "Setting mOrientationChangeComplete=true because wtoken "
-                            + wtoken + " numInteresting=" + numInteresting
-                            + " numDrawn=" + wtoken.numDrawnWindows);
-                    // This will set mOrientationChangeComplete and cause a pass through layout.
-                    mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
-                }
-            } else if (!wtoken.allDrawn) {
-                int numInteresting = wtoken.numInterestingWindows;
-                if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
-                    if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
-                            "allDrawn: " + wtoken
-                            + " interesting=" + numInteresting
-                            + " drawn=" + wtoken.numDrawnWindows);
-                    wtoken.allDrawn = true;
-                    mPendingLayoutChanges |= PhoneWindowManager.FINISH_LAYOUT_REDO_ANIM;
-                    if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
-                        mService.debugLayoutRepeats("testTokenMayBeDrawnLocked",
-                            mPendingLayoutChanges);
-                    }
+            final boolean allDrawn = wtoken.allDrawn;
+            if (allDrawn != wtoken.mAppAnimator.allDrawn) {
+                wtoken.mAppAnimator.allDrawn = allDrawn;
+                if (allDrawn) {
+                    // The token has now changed state to having all
+                    // windows shown...  what to do, what to do?
+                    if (wtoken.mAppAnimator.freezingScreen) {
+                        wtoken.mAppAnimator.showAllWindowsLocked();
+                        mService.unsetAppFreezingScreenLocked(wtoken, false, true);
+                        if (WindowManagerService.DEBUG_ORIENTATION) Slog.i(TAG,
+                                "Setting mOrientationChangeComplete=true because wtoken "
+                                + wtoken + " numInteresting=" + wtoken.numInterestingWindows
+                                + " numDrawn=" + wtoken.numDrawnWindows);
+                        // This will set mOrientationChangeComplete and cause a pass through layout.
+                        mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
+                    } else {
+                        mPendingLayoutChanges |= PhoneWindowManager.FINISH_LAYOUT_REDO_ANIM;
+                        if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
+                            mService.debugLayoutRepeats("testTokenMayBeDrawnLocked",
+                                mPendingLayoutChanges);
+                        }
 
-                    // We can now show all of the drawn windows!
-                    if (!mService.mOpeningApps.contains(wtoken)) {
-                        mAnimating |= wtoken.mAppAnimator.showAllWindowsLocked();
+                        // We can now show all of the drawn windows!
+                        if (!mService.mOpeningApps.contains(wtoken)) {
+                            mAnimating |= wtoken.mAppAnimator.showAllWindowsLocked();
+                        }
                     }
                 }
             }
@@ -454,7 +409,6 @@
     }
 
     private void performAnimationsLocked() {
-        mTokenMayBeDrawn = false;
         mForceHiding = false;
         mDetachedWallpaper = null;
         mWindowAnimationBackground = null;
@@ -465,9 +419,7 @@
             mPendingActions |= WALLPAPER_ACTION_PENDING;
         }
 
-        if (mTokenMayBeDrawn) {
-            testTokenMayBeDrawnLocked();
-        }
+        testTokenMayBeDrawnLocked();
     }
 
     synchronized void animate() {
@@ -584,18 +536,23 @@
     }
 
     public void dump(PrintWriter pw, String prefix, boolean dumpAll) {
-        if (mWindowDetachedWallpaper != null) {
-            pw.print("  mWindowDetachedWallpaper="); pw.println(mWindowDetachedWallpaper);
-        }
-        if (mWindowAnimationBackgroundSurface != null) {
-            pw.println("  mWindowAnimationBackgroundSurface:");
-            mWindowAnimationBackgroundSurface.printTo("    ", pw);
-        }
-        if (mDimAnimator != null) {
-            pw.println("  mDimAnimator:");
-            mDimAnimator.printTo("    ", pw);
-        } else {
-            pw.println( "  no DimAnimator ");
+        if (dumpAll) {
+            if (mWindowDetachedWallpaper != null) {
+                pw.print(prefix); pw.print("mWindowDetachedWallpaper=");
+                        pw.println(mWindowDetachedWallpaper);
+            }
+            pw.print(prefix); pw.print("mAnimTransactionSequence=");
+                    pw.println(mAnimTransactionSequence);
+            if (mWindowAnimationBackgroundSurface != null) {
+                pw.print(prefix); pw.print("mWindowAnimationBackgroundSurface:");
+                        mWindowAnimationBackgroundSurface.printTo(prefix + "  ", pw);
+            }
+            if (mDimAnimator != null) {
+                pw.print(prefix); pw.print("mDimAnimator:");
+                mDimAnimator.printTo(prefix + "  ", pw);
+            } else {
+                pw.print(prefix); pw.print("no DimAnimator ");
+            }
         }
     }
 
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 6906ed9..c850bd2 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -96,6 +96,7 @@
 import android.util.EventLog;
 import android.util.FloatMath;
 import android.util.Log;
+import android.util.LogPrinter;
 import android.util.Pair;
 import android.util.Slog;
 import android.util.SparseIntArray;
@@ -642,6 +643,10 @@
     }
     LayoutFields mInnerFields = new LayoutFields();
 
+    /** Skip repeated AppWindowTokens initialization. Note that AppWindowsToken's version of this
+     * is a long initialized to Long.MIN_VALUE so that it doesn't match this value on startup. */
+    private int mTransactionSequence;
+
     /** Only do a maximum of 6 repeated layouts. After that quit */
     private int mLayoutRepeatCount;
 
@@ -802,6 +807,8 @@
         @Override
         public void run() {
             Looper.prepare();
+            //Looper.myLooper().setMessageLogging(new LogPrinter(
+            //        android.util.Log.DEBUG, TAG, android.util.Log.LOG_ID_SYSTEM));
             WindowManagerService s = new WindowManagerService(mContext, mPM,
                     mHaveInputMethods, mAllowBootMessages, mOnlyCore);
             android.os.Process.setThreadPriority(
@@ -3582,7 +3589,7 @@
 
     public void setAppGroupId(IBinder token, int groupId) {
         if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
-                "setAppStartingIcon()")) {
+                "setAppGroupId()")) {
             throw new SecurityException("Requires MANAGE_APP_TOKENS permission");
         }
 
@@ -4005,7 +4012,7 @@
             CharSequence nonLocalizedLabel, int labelRes, int icon,
             int windowFlags, IBinder transferFrom, boolean createIfNeeded) {
         if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
-                "setAppStartingIcon()")) {
+                "setAppStartingWindow()")) {
             throw new SecurityException("Requires MANAGE_APP_TOKENS permission");
         }
 
@@ -4061,12 +4068,13 @@
                         startingWindow.mToken = wtoken;
                         startingWindow.mRootToken = wtoken;
                         startingWindow.mAppToken = wtoken;
-                        if (DEBUG_WINDOW_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v(TAG,
-                                "Removing starting window: " + startingWindow);
+                        if (DEBUG_WINDOW_MOVEMENT || DEBUG_ADD_REMOVE || DEBUG_STARTING_WINDOW) {
+                            Slog.v(TAG, "Removing starting window: " + startingWindow);
+                        }
                         mWindows.remove(startingWindow);
                         mWindowsChanged = true;
-                        if (DEBUG_ADD_REMOVE) Slog.v(TAG, "Removing starting " + startingWindow
-                                + " from " + ttoken);
+                        if (DEBUG_ADD_REMOVE) Slog.v(TAG,
+                                "Removing starting " + startingWindow + " from " + ttoken);
                         ttoken.windows.remove(startingWindow);
                         ttoken.allAppWindows.remove(startingWindow);
                         addWindowToListInOrderLocked(startingWindow, true);
@@ -4153,6 +4161,8 @@
             // show a starting window -- the current effect (a full-screen
             // opaque starting window that fades away to the real contents
             // when it is ready) does not work for this.
+            if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Checking theme of starting window: 0x"
+                    + Integer.toHexString(theme));
             if (theme != 0) {
                 AttributeCache.Entry ent = AttributeCache.instance().get(pkg, theme,
                         com.android.internal.R.styleable.Window);
@@ -4161,6 +4171,15 @@
                     // pretend like we didn't see that.
                     return;
                 }
+                if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Translucent="
+                        + ent.array.getBoolean(
+                                com.android.internal.R.styleable.Window_windowIsTranslucent, false)
+                        + " Floating="
+                        + ent.array.getBoolean(
+                                com.android.internal.R.styleable.Window_windowIsFloating, false)
+                        + " ShowWallpaper="
+                        + ent.array.getBoolean(
+                                com.android.internal.R.styleable.Window_windowShowWallpaper, false));
                 if (ent.array.getBoolean(
                         com.android.internal.R.styleable.Window_windowIsTranslucent, false)) {
                     return;
@@ -4184,6 +4203,7 @@
                 }
             }
 
+            if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Creating StartingData");
             mStartingIconInTransition = true;
             wtoken.startingData = new StartingData(pkg, theme, compatInfo, nonLocalizedLabel,
                     labelRes, icon, windowFlags);
@@ -4191,6 +4211,7 @@
             // Note: we really want to do sendMessageAtFrontOfQueue() because we
             // want to process the message ASAP, before any other queued
             // messages.
+            if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Enqueueing ADD_STARTING");
             mH.sendMessageAtFrontOfQueue(m);
         }
     }
@@ -8462,6 +8483,26 @@
         }
     }
 
+    private void updateAllDrawnLocked() {
+        // See if any windows have been drawn, so they (and others
+        // associated with them) can now be shown.
+        final ArrayList<AppWindowToken> appTokens = mAnimatingAppTokens;
+        final int NT = appTokens.size();
+        for (int i=0; i<NT; i++) {
+            AppWindowToken wtoken = appTokens.get(i);
+            if (!wtoken.allDrawn) {
+                int numInteresting = wtoken.numInterestingWindows;
+                if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
+                    if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
+                            "allDrawn: " + wtoken
+                            + " interesting=" + numInteresting
+                            + " drawn=" + wtoken.numDrawnWindows);
+                    wtoken.allDrawn = true;
+                }
+            }
+        }
+    }
+
     // "Something has changed!  Let's make it correct now."
     private final void performLayoutAndPlaceSurfacesLockedInner(
             boolean recoveringMemory) {
@@ -8501,6 +8542,7 @@
         mInnerFields.mHoldScreen = null;
         mInnerFields.mScreenBrightness = -1;
         mInnerFields.mButtonBrightness = -1;
+        mTransactionSequence++;
 
         if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG,
                 ">>> OPEN TRANSACTION performLayoutAndPlaceSurfaces");
@@ -8578,6 +8620,7 @@
             mInnerFields.mSyswin = false;
 
             boolean focusDisplayed = false;
+            boolean updateAllDrawn = false;
             final int N = mWindows.size();
             for (i=N-1; i>=0; i--) {
                 WindowState w = mWindows.get(i);
@@ -8634,6 +8677,53 @@
                     }
 
                     winAnimator.setSurfaceBoundaries(recoveringMemory);
+
+                    final AppWindowToken atoken = w.mAppToken;
+                    if (DEBUG_STARTING_WINDOW && atoken != null && w == atoken.startingWindow) {
+                        Slog.d(TAG, "updateWindows: starting " + w + " isOnScreen="
+                            + w.isOnScreen() + " allDrawn=" + atoken.allDrawn
+                            + " freezingScreen=" + atoken.mAppAnimator.freezingScreen);
+                    }
+                    if (atoken != null && (!atoken.allDrawn || atoken.mAppAnimator.freezingScreen)) {
+                        if (atoken.lastTransactionSequence != mTransactionSequence) {
+                            atoken.lastTransactionSequence = mTransactionSequence;
+                            atoken.numInterestingWindows = atoken.numDrawnWindows = 0;
+                            atoken.startingDisplayed = false;
+                        }
+                        if ((w.isOnScreen() || winAnimator.mAttrType
+                                == WindowManager.LayoutParams.TYPE_BASE_APPLICATION)
+                                && !w.mExiting && !w.mDestroying) {
+                            if (WindowManagerService.DEBUG_VISIBILITY ||
+                                    WindowManagerService.DEBUG_ORIENTATION) {
+                                Slog.v(TAG, "Eval win " + w + ": isDrawn=" + w.isDrawnLw()
+                                        + ", isAnimating=" + winAnimator.isAnimating());
+                                if (!w.isDrawnLw()) {
+                                    Slog.v(TAG, "Not displayed: s=" + winAnimator.mSurface
+                                            + " pv=" + w.mPolicyVisibility
+                                            + " mDrawState=" + winAnimator.mDrawState
+                                            + " ah=" + w.mAttachedHidden
+                                            + " th=" + atoken.hiddenRequested
+                                            + " a=" + winAnimator.mAnimating);
+                                }
+                            }
+                            if (w != atoken.startingWindow) {
+                                if (!atoken.mAppAnimator.freezingScreen || !w.mAppFreezing) {
+                                    atoken.numInterestingWindows++;
+                                    if (w.isDrawnLw()) {
+                                        atoken.numDrawnWindows++;
+                                        if (WindowManagerService.DEBUG_VISIBILITY ||
+                                                WindowManagerService.DEBUG_ORIENTATION) Slog.v(TAG,
+                                                "tokenMayBeDrawn: " + atoken
+                                                + " freezingScreen=" + atoken.mAppAnimator.freezingScreen
+                                                + " mAppFreezing=" + w.mAppFreezing);
+                                        updateAllDrawn = true;
+                                    }
+                                }
+                            } else if (w.isDrawnLw()) {
+                                atoken.startingDisplayed = true;
+                            }
+                        }
+                    }
                 }
 
                 if (someoneLosingFocus && w == mCurrentFocus && w.isDisplayedLw()) {
@@ -8643,6 +8733,10 @@
                 updateResizingWindows(w);
             }
 
+            if (updateAllDrawn) {
+                updateAllDrawnLocked();
+            }
+
             if (focusDisplayed) {
                 mH.sendEmptyMessage(H.REPORT_LOSING_FOCUS);
             }
@@ -9771,7 +9865,8 @@
             }
             pw.print("  mSystemBooted="); pw.print(mSystemBooted);
                     pw.print(" mDisplayEnabled="); pw.println(mDisplayEnabled);
-            pw.print("  mLayoutNeeded="); pw.println(mLayoutNeeded);
+            pw.print("  mLayoutNeeded="); pw.print(mLayoutNeeded);
+                    pw.print("mTransactionSequence="); pw.println(mTransactionSequence);
             pw.print("  mDisplayFrozen="); pw.print(mDisplayFrozen);
                     pw.print(" mWindowsFreezingScreen="); pw.print(mWindowsFreezingScreen);
                     pw.print(" mAppsFreezingScreen="); pw.print(mAppsFreezingScreen);
@@ -9832,6 +9927,8 @@
             }
             pw.print("  mStartingIconInTransition="); pw.print(mStartingIconInTransition);
                     pw.print(" mSkipAppTransitionAnimation="); pw.println(mSkipAppTransitionAnimation);
+            pw.println("  Window Animator:");
+            mAnimator.dump(pw, "    ", dumpAll);
         }
     }
 
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index 109161a..03e52fe 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -120,6 +120,16 @@
     static final int READY_TO_SHOW = 3;
     /** Set when the window has been shown in the screen the first time. */
     static final int HAS_DRAWN = 4;
+    static String drawStateToString(int state) {
+        switch (state) {
+            case NO_SURFACE: return "NO_SURFACE";
+            case DRAW_PENDING: return "DRAW_PENDING";
+            case COMMIT_DRAW_PENDING: return "COMMIT_DRAW_PENDING";
+            case READY_TO_SHOW: return "READY_TO_SHOW";
+            case HAS_DRAWN: return "HAS_DRAWN";
+            default: return Integer.toString(state);
+        }
+    }
     int mDrawState;
 
     /** Was this window last hidden? */
@@ -399,10 +409,19 @@
     }
 
     boolean finishDrawingLocked() {
+        if (DEBUG_STARTING_WINDOW &&
+                mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING) {
+            Slog.v(TAG, "Finishing drawing window " + mWin + ": mDrawState="
+                    + drawStateToString(mDrawState));
+        }
         if (mDrawState == DRAW_PENDING) {
             if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
                 Slog.v(TAG, "finishDrawingLocked: mDrawState=COMMIT_DRAW_PENDING " + this + " in "
                         + mSurface);
+            if (DEBUG_STARTING_WINDOW &&
+                    mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING) {
+                Slog.v(TAG, "Draw state now committed in " + mWin);
+            }
             mDrawState = COMMIT_DRAW_PENDING;
             return true;
         }
@@ -411,11 +430,17 @@
 
     // This must be called while inside a transaction.
     boolean commitFinishDrawingLocked(long currentTime) {
+        if (DEBUG_STARTING_WINDOW &&
+                mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING) {
+            Slog.i(TAG, "commitFinishDrawingLocked: " + mWin + " cur mDrawState="
+                    + drawStateToString(mDrawState));
+        }
         if (mDrawState != COMMIT_DRAW_PENDING) {
             return false;
         }
-        if (DEBUG_SURFACE_TRACE || DEBUG_ANIM)
+        if (DEBUG_SURFACE_TRACE || DEBUG_ANIM) {
             Slog.i(TAG, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW " + mSurface);
+        }
         mDrawState = READY_TO_SHOW;
         final boolean starting = mWin.mAttrs.type == TYPE_APPLICATION_STARTING;
         final AppWindowToken atoken = mWin.mAppToken;
@@ -1214,7 +1239,8 @@
 
     // This must be called while inside a transaction.
     boolean performShowLocked() {
-        if (DEBUG_VISIBILITY) {
+        if (DEBUG_VISIBILITY || (DEBUG_STARTING_WINDOW &&
+                mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING)) {
             RuntimeException e = null;
             if (!WindowManagerService.HIDE_STACK_CRAWLS) {
                 e = new RuntimeException();
@@ -1223,12 +1249,7 @@
             Slog.v(TAG, "performShow on " + this
                     + ": mDrawState=" + mDrawState + " readyForDisplay="
                     + mWin.isReadyForDisplayIgnoringKeyguard()
-                    + " starting=" + (mWin.mAttrs.type == TYPE_APPLICATION_STARTING), e);
-        }
-        if (mDrawState == READY_TO_SHOW && mWin.isReadyForDisplayIgnoringKeyguard()) {
-            if (SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
-                WindowManagerService.logSurface(mWin, "SHOW (performShowLocked)", null);
-            if (DEBUG_VISIBILITY) Slog.v(TAG, "Showing " + this
+                    + " starting=" + (mWin.mAttrs.type == TYPE_APPLICATION_STARTING)
                     + " during animation: policyVis=" + mWin.mPolicyVisibility
                     + " attHidden=" + mWin.mAttachedHidden
                     + " tok.hiddenRequested="
@@ -1237,7 +1258,24 @@
                     + (mWin.mAppToken != null ? mWin.mAppToken.hidden : false)
                     + " animating=" + mAnimating
                     + " tok animating="
-                    + (mWin.mAppToken != null ? mWin.mAppToken.mAppAnimator.animating : false));
+                    + (mWin.mAppToken != null ? mWin.mAppToken.mAppAnimator.animating : false), e);
+        }
+        if (mDrawState == READY_TO_SHOW && mWin.isReadyForDisplayIgnoringKeyguard()) {
+            if (SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
+                WindowManagerService.logSurface(mWin, "SHOW (performShowLocked)", null);
+            if (DEBUG_VISIBILITY || (DEBUG_STARTING_WINDOW &&
+                    mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING)) {
+                Slog.v(TAG, "Showing " + this
+                        + " during animation: policyVis=" + mWin.mPolicyVisibility
+                        + " attHidden=" + mWin.mAttachedHidden
+                        + " tok.hiddenRequested="
+                        + (mWin.mAppToken != null ? mWin.mAppToken.hiddenRequested : false)
+                        + " tok.hidden="
+                        + (mWin.mAppToken != null ? mWin.mAppToken.hidden : false)
+                        + " animating=" + mAnimating
+                        + " tok animating="
+                        + (mWin.mAppToken != null ? mWin.mAppToken.mAppAnimator.animating : false));
+            }
 
             mService.enableScreenIfNeededLocked();
 
@@ -1425,7 +1463,8 @@
         if (mSurface != null) {
             if (dumpAll) {
                 pw.print(prefix); pw.print("mSurface="); pw.println(mSurface);
-                pw.print(prefix); pw.print("mDrawState="); pw.print(mDrawState);
+                pw.print(prefix); pw.print("mDrawState=");
+                pw.print(drawStateToString(mDrawState));
                 pw.print(" mLastHidden="); pw.println(mLastHidden);
             }
             pw.print(prefix); pw.print("Surface: shown="); pw.print(mSurfaceShown);