I've managed to get this up and running now -- great work on this, Joe! Mobilespec runs on my N4, with 10 failing tests: 3 in contacts; 7 in file-transfer. Otherwise, things seem to be working pretty well.
I used a new build of Crosswalk, and found that the embedding API has changed since the weekend (when Ningxin's patches applied). I've issued a pull request at https://github.com/infil00p/cordova-crosswalk-engine/pull/5for it -- I'm not sure if there's a way to keep compatibility with last week's Crosswalk, or if we'd even want to. (Ningxin, if you could take a look at that PR and see if it makes sense, I'd appreciate it) Joe, I also had to patch the default constructor for XWalkCordovaWebView; it wasn't creating its own client objects, so it got the default ones, and most of the tests were failing because some component of the bridge wan't working. https://github.com/infil00p/cordova-crosswalk-engine/pull/4 is out for that. Count me in for the hangout -- this is exciting stuff Ian On Wed, Apr 23, 2014 at 10:26 AM, Brian LeRoux <b...@brian.io> wrote: > Yup I'll track em down > On Apr 23, 2014 7:17 AM, "Andrew Grieve" <agri...@chromium.org> wrote: > > > Does anyone have a contact at moz that we could invite? > > > > On Wed, Apr 23, 2014 at 10:09 AM, Andrew Grieve <agri...@chromium.org> > > wrote: > > > Depends on their interest level I think. Faster we can get this out > > > the door the better. If we need to delay for geckoview, then I don't > > > think we should gate on it, just release it after. > > > > > > On Wed, Apr 23, 2014 at 3:01 AM, Tommy Williams <to...@devgeeks.org> > > wrote: > > >> More engines, more better... > > >> On 23 Apr 2014 16:32, "Joe Bowser" <bows...@gmail.com> wrote: > > >> > > >>> Hey > > >>> > > >>> A Hangout would have to happen on Friday at the earliest. It'd be > > good if > > >>> we could get someone from Mozilla on the hangout as well. I haven't > > gotten > > >>> MozillaView (GeckoView with Cordova methods) fully working yet. For > > some > > >>> reason it's not rendering on the screen. > > >>> > > >>> Ideally it'd be cool to have at least two options when this feature > > finally > > >>> lands. > > >>> > > >>> What do other people think? > > >>> > > >>> Joe > > >>> On 22 Apr 2014 20:06, "Hu, Ningxin" <ningxin...@intel.com> wrote: > > >>> > > >>> > Joe, > > >>> > > > >>> > Thanks for your review and merge the PRs. > > >>> > > > >>> > To pluggable webview interest group: > > >>> > Are we OK to setup a hangout this week for initial introduction and > > >>> > discussion of next steps? > > >>> > > > >>> > Thanks, > > >>> > -ningxin > > >>> > > > >>> > > -----Original Message----- > > >>> > > From: Hu, Ningxin [mailto:ningxin...@intel.com] > > >>> > > Sent: Tuesday, April 22, 2014 4:04 PM > > >>> > > To: dev@cordova.apache.org > > >>> > > Subject: RE: [Android] Refactoring for different engines > > >>> > > > > >>> > > The PoC is great! Quite excited about the direction! > > >>> > > > > >>> > > I've sent a PR to update the cordova-crosswalk-engine to latest > > >>> crosswalk > > >>> > > embedding API. It works with xwalk_core_library at 6.35.124.0. > > >>> > > > > >>> > > I've also changed the CordovaWebView interface slightly (adding > > >>> > getView() API) > > >>> > > to allow XWalkCordovaWebView to composite a XWalkView instead of > > >>> > extending > > >>> > > it. It resolves some API naming issues for XWalkView case. > > >>> > > > > >>> > > Please review them at: > > >>> > > https://github.com/infil00p/cordova-crosswalk-engine/pull/3 > > >>> > > https://github.com/infil00p/cordova-android/pull/2 > > >>> > > > > >>> > > Thanks, > > >>> > > -ningxin > > >>> > > > > >>> > > > -----Original Message----- > > >>> > > > From: Joe Bowser [mailto:bows...@gmail.com] > > >>> > > > Sent: Friday, April 11, 2014 12:45 AM > > >>> > > > To: dev > > >>> > > > Subject: Re: [Android] Refactoring for different engines > > >>> > > > > > >>> > > > Yeah, I'd be cool with setting up a hangout. Everyone should > > take a > > >>> > > > look at the PoC, I've basically distilled it down to four or > five > > >>> > > > classes so far, but with some work, we may be able to get it > > down to > > >>> > > > three. Due to legacy, we're pretty stuck with the Android > > WebView > > >>> API > > >>> > calls, > > >>> > > but these can probably be modified. > > >>> > > > > > >>> > > > It'd be good to get Mozilla people on the call as well, since > > they > > >>> > > > have their WebView as well. > > >>> > > > > > >>> > > > On Thu, Apr 10, 2014 at 9:38 AM, Hu, Ningxin < > > ningxin...@intel.com> > > >>> > wrote: > > >>> > > > > Hangout would be a good idea. > > >>> > > > > > > >>> > > > > FYI, I will be off next week. How about the week after next? > > If it > > >>> > > > > works, please > > >>> > > > feel free to schedule one and count me in. > > >>> > > > > > > >>> > > > > Thanks, > > >>> > > > > -ningxin > > >>> > > > > > > >>> > > > >> -----Original Message----- > > >>> > > > >> From: mmo...@google.com [mailto:mmo...@google.com] On > Behalf > > Of > > >>> > > > >> Michal Mocny > > >>> > > > >> Sent: Tuesday, April 08, 2014 11:39 PM > > >>> > > > >> To: dev > > >>> > > > >> Subject: Re: [Android] Refactoring for different engines > > >>> > > > >> > > >>> > > > >> Would it be alright to set up a Hangout some time to > introduce > > >>> > everyone? > > >>> > > > >> > > >>> > > > >> Joe has been leading the effort here, but there are other > > cordova > > >>> > > > >> contributors for whom this is top priority. It would be > nice > > if > > >>> we > > >>> > > > >> could all meet to say hello and make sure we are all going > in > > the > > >>> > > > >> right > > >>> > > > direction. > > >>> > > > >> > > >>> > > > >> Quite exciting! > > >>> > > > >> > > >>> > > > >> -Michal > > >>> > > > >> > > >>> > > > >> > > >>> > > > >> On Tue, Apr 8, 2014 at 10:56 AM, Hu, Ningxin < > > >>> ningxin...@intel.com> > > >>> > > wrote: > > >>> > > > >> > > >>> > > > >> > Joe, thanks for this. I am very excited. > > >>> > > > >> > > > >>> > > > >> > FYI. Crosswalk team is working on refactoring the WebView > > API to > > >>> > > > >> > support embedding usage better [1]. (Previously the layer > > API > > >>> was > > >>> > > > >> > not exposed as public usage). > > >>> > > > >> > > > >>> > > > >> > I would like to review the PoC and work with you to get > > >>> Crosswalk > > >>> > > > >> > fits into the pluggable WebView architecture. > > >>> > > > >> > > > >>> > > > >> > Thanks, > > >>> > > > >> > -ningxin > > >>> > > > >> > > > >>> > > > >> > > -----Original Message----- > > >>> > > > >> > > From: Joe Bowser [mailto:bows...@gmail.com] > > >>> > > > >> > > Sent: Wednesday, March 19, 2014 7:08 AM > > >>> > > > >> > > To: dev > > >>> > > > >> > > Subject: Re: [Android] Refactoring for different engines > > >>> > > > >> > > > > >>> > > > >> > > Hey > > >>> > > > >> > > > > >>> > > > >> > > After debugging, I did some minor updates to the plugin > > >>> README. > > >>> > > > >> > > It > > >>> > > > >> > should be > > >>> > > > >> > > easier to get this up and running, although there's > still > > the > > >>> > > > >> > > issue of > > >>> > > > >> > after-install > > >>> > > > >> > > hooks and the relative path weirdness with the Crosswalk > > >>> > Library itself. > > >>> > > > >> > > > > >>> > > > >> > > It still doesn't support the CLI at all, but it should > be > > >>> there > > >>> > > > >> > > with the > > >>> > > > >> > old flow. > > >>> > > > >> > > > > >>> > > > >> > > On Mon, Mar 17, 2014 at 1:14 PM, Michal Mocny > > >>> > > > >> > > <mmo...@chromium.org> > > >>> > > > >> > > wrote: > > >>> > > > >> > > > (Sorry Joe, Googlers are down in California and way > > busy. > > >>> > > > >> > > > Will be back in a week. Super excited about this, > > though.) > > >>> > > > >> > > > > > >>> > > > >> > > > -Michal > > >>> > > > >> > > > > > >>> > > > >> > > > > > >>> > > > >> > > > On Mon, Mar 17, 2014 at 2:53 PM, Joe Bowser > > >>> > > > >> > > > <bows...@gmail.com> > > >>> > > > >> wrote: > > >>> > > > >> > > > > > >>> > > > >> > > >> Reviving this thread! > > >>> > > > >> > > >> > > >>> > > > >> > > >> Can other people look at this, and see if/when we > > should > > >>> > land this? > > >>> > > > >> > > >> I know that I have to re-write the tests still, but I > > would > > >>> > > > >> > > >> like some feedback before merging it in. Also, it'd > be > > >>> > > > >> > > >> super awesome if other people could try and make a > > WebView > > >>> > > > >> > > >> based on the interfaces and recommend which methods > > should > > >>> > > > >> > > >> die. I want to get this released in the next month > or > > so, > > >>> > > > >> > > >> so any time and feedback would be greatly > appreciated. > > >>> > > > >> > > >> > > >>> > > > >> > > >> Thanks > > >>> > > > >> > > >> > > >>> > > > >> > > >> On Thu, Mar 13, 2014 at 3:50 PM, Joe Bowser > > >>> > > > >> > > >> <bows...@gmail.com> > > >>> > > > >> > wrote: > > >>> > > > >> > > >> > Hey, I created the following today to track various > > >>> > > > >> > > >> > WebView > > >>> > > > >> > progresses: > > >>> > > > >> > > >> > https://issues.apache.org/jira/browse/CB-6246 > > >>> > > > >> > > >> > > > >>> > > > >> > > >> > I also have this repo created. The licensing is > > ugly as > > >>> > > > >> > > >> > all crap, but it's a Proof-Of-Concept: > > >>> > > > >> > > >> > > https://github.com/infil00p/cordova-crosswalk-engine > > >>> > > > >> > > >> > > > >>> > > > >> > > >> > If I can get some help getting plugman to just load > > >>> > > > >> > > >> > Crosswalk, it'll > > >>> > > > >> > > >> look hawt. > > >>> > > > >> > > >> > > > >>> > > > >> > > >> > BTW: We should probably get this ready to go into > > Android > > >>> > > > >> > > >> > in the next two months and deprecate the > setProperty > > >>> > > > >> > > >> > methods, since all properties should be preferences > > in > > >>> > config.xml > > >>> > > now. > > >>> > > > >> > > >> > > > >>> > > > >> > > >> > On Mon, Mar 10, 2014 at 2:42 PM, Joe Bowser > > >>> > > > >> > > >> > <bows...@gmail.com> > > >>> > > > >> > > wrote: > > >>> > > > >> > > >> >> Perhaps. There would be additional benefits to > this > > >>> > > > >> > > >> >> approach, namely fixes being added to that > platform > > more > > >>> > > > >> > > >> >> quickly. I'll probably take a look at that once I > > have > > >>> > > > >> > > >> >> Crosswalk > > >>> > > > finalized. > > >>> > > > >> > > >> >> > > >>> > > > >> > > >> >> On Mon, Mar 10, 2014 at 9:49 AM, Brian LeRoux > > >>> > > > >> > > >> >> <b...@brian.io> > > >>> > > > wrote: > > >>> > > > >> > > >> >>> this is great stuff > > >>> > > > >> > > >> >>> > > >>> > > > >> > > >> >>> do we think it may be possible to bring in amazon > > >>> fireos > > >>> > > > >> > > >> >>> stuff > > >>> > > > >> > > >> eventually > > >>> > > > >> > > >> >>> too? > > >>> > > > >> > > >> >>> > > >>> > > > >> > > >> >>> > > >>> > > > >> > > >> >>> On Fri, Mar 7, 2014 at 3:22 PM, Joe Bowser > > >>> > > > >> > > >> >>> <bows...@gmail.com> > > >>> > > > >> > wrote: > > >>> > > > >> > > >> >>> > > >>> > > > >> > > >> >>>> BTW: I committed it in my repo, not the main > > Apache > > >>> one. > > >>> > > > >> > > >> >>>> > > >>> > > > >> > > >> >>>> On Fri, Mar 7, 2014 at 3:21 PM, Joe Bowser > > >>> > > > >> > > >> >>>> <bows...@gmail.com> > > >>> > > > >> > > wrote: > > >>> > > > >> > > >> >>>> > Hey > > >>> > > > >> > > >> >>>> > > > >>> > > > >> > > >> >>>> > I just committed some code based on their > > WebView > > >>> > > > >> > > >> >>>> > modifications that allows you to choose your > > >>> renderer > > >>> > > > >> > > >> >>>> > in the > > >>> > > > >> > config file > > >>> > > > >> > > with this: > > >>> > > > >> > > >> >>>> > > > >>> > > > >> > > >> >>>> > <preference name="webView" > > >>> > > > >> > > >> >>>> > > > >>> value="org.apache.cordova.engine.crosswalk.XWalkCordo > > >>> > > > >> > > >> >>>> > va > > >>> > > > >> > > >> >>>> > Web > > >>> > > > >> > > >> >>>> > View > > >>> > > > >> > > >> >>>> > " /> > > >>> > > > >> > > >> >>>> > > > >>> > > > >> > > >> >>>> > You currently have to copy over the *.pak file > > and > > >>> > > > >> > > >> >>>> > the jsapi from a Crosswalk Example project to > > get > > >>> > > > >> > > >> >>>> > this to work. The next thing that I'm going > to > > do > > >>> is > > >>> > > > >> > > >> >>>> > figure out how to write this as a plugin and > > have it > > >>> > > > >> > > >> >>>> > install on a default > > >>> > > > project. > > >>> > > > >> > > >> >>>> > Also, right now the bridge doesn't seem to > > work, and > > >>> > > > >> > > >> >>>> > I don't know why exactly. That being said, > the > > >>> > > > >> > > >> fact > > >>> > > > >> > > >> >>>> > that I can choose which version of > > Chrome/Chromium > > >>> > > > >> > > >> >>>> > I'm running with > > >>> > > > >> > > >> a > > >>> > > > >> > > >> >>>> > single XML preference is HUGE. > > >>> > > > >> > > >> >>>> > > > >>> > > > >> > > >> >>>> > There's definitely a lot more work that needs > > to be > > >>> > > > >> > > >> >>>> > done, but as > > >>> > > > >> > > >> long > > >>> > > > >> > > >> >>>> > as we have something that we can fit into the > > >>> > > > >> > > >> >>>> > interface, we should > > >>> > > > >> > > >> be > > >>> > > > >> > > >> >>>> > able to put in things like GeckoView or other > > third > > >>> > > > >> > > >> >>>> > party > > >>> > > > >> > renderers. > > >>> > > > >> > > >> >>>> > The nightmare of being stuck with bullshit > > WebView > > >>> > > > >> > > >> >>>> > bugs may soon be over. > > >>> > > > >> > > >> >>>> > > > >>> > > > >> > > >> >>>> > On Wed, Mar 5, 2014 at 8:59 PM, Michal Mocny > > >>> > > > >> > > >> >>>> > <mmo...@chromium.org> > > >>> > > > >> > > >> >>>> wrote: > > >>> > > > >> > > >> >>>> >> > > >>> https://github.com/crosswalk-project/crosswalk-cordo > > >>> > > > >> > > >> >>>> >> va > > >>> > > > >> > > >> >>>> >> -an > > >>> > > > >> > > >> >>>> >> droi > > >>> > > > >> > > >> >>>> >> d > > >>> > > > >> > > >> >>>> >> > > >>> > > > >> > > >> >>>> >> First patch they landed, which claims to have > > min > > >>> > > > >> > > >> >>>> >> viable xwalk > > >>> > > > >> > > >> webview: > > >>> > > > >> > > >> >>>> >> > > >>> > > > >> > > >> >>>> > > >>> > > > >> > > >> > > >>> https://github.com/crosswalk-project/crosswalk-cordova-andro > > >>> > > > >> > > >> id > > >>> > > > >> > > >> /co > > >>> > > > >> > > >> mmit > > >>> > > > >> > > >> /a04dedeb0204e7542d190312c6ae70c795a26e04 > > >>> > > > >> > > >> >>>> >> > > >>> > > > >> > > >> >>>> >> > > >>> > > > >> > > >> >>>> >> On Wed, Mar 5, 2014 at 11:37 PM, Michal Mocny > > >>> > > > >> > > >> >>>> >> <mmo...@chromium.org > > >>> > > > >> > > >> > > > >>> > > > >> > > >> >>>> wrote: > > >>> > > > >> > > >> >>>> >> > > >>> > > > >> > > >> >>>> >>> I haven't looked yet, but did you see: > > >>> > > > >> > > >> >>>> >>> > > >>> https://crosswalk-project.org/#wiki/crosswalk-cordo > > >>> > > > >> > > >> >>>> >>> va > > >>> > > > >> > > >> >>>> >>> -an > > >>> > > > >> > > >> >>>> >>> droi > > >>> > > > >> > > >> >>>> >>> d > > >>> > > > >> > > >> >>>> >>> > > >>> > > > >> > > >> >>>> >>> ? > > >>> > > > >> > > >> >>>> >>> > > >>> > > > >> > > >> >>>> >>> > > >>> > > > >> > > >> >>>> >>> On Wed, Mar 5, 2014 at 10:20 PM, Andrew > > Grieve < > > >>> > > > >> > > >> agri...@chromium.org > > >>> > > > >> > > >> >>>> >wrote: > > >>> > > > >> > > >> >>>> >>> > > >>> > > > >> > > >> >>>> >>>> First - very excited that you're working on > > this! > > >>> > > > >> > > >> >>>> >>>> > > >>> > > > >> > > >> >>>> >>>> Had a quick look. Not sure there's much to > be > > >>> > gleaned > > >>> > > yet. > > >>> > > > >> > > >> >>>> >>>> Once > > >>> > > > >> > > >> you > > >>> > > > >> > > >> >>>> start > > >>> > > > >> > > >> >>>> >>>> in on hooking up x-walk's webview I think > it > > will > > >>> > > > >> > > >> >>>> >>>> become more > > >>> > > > >> > > >> obvious > > >>> > > > >> > > >> >>>> what > > >>> > > > >> > > >> >>>> >>>> the interface should look like. E.g., does > > x-walk > > >>> > > > >> > > >> >>>> >>>> even have the > > >>> > > > >> > > >> >>>> concept of > > >>> > > > >> > > >> >>>> >>>> ChromeClient vs WebViewClient vs WebView? > > Also > > >>> > > > >> > > >> >>>> >>>> unsure whether the > > >>> > > > >> > > >> >>>> class > > >>> > > > >> > > >> >>>> >>>> should extend android.View as well as > > implement > > >>> > > > >> > > >> >>>> >>>> our > > >>> > > > >> > interface. > > >>> > > > >> > > >> E.g. > > >>> > > > >> > > >> >>>> >>>> alternative is to have a "getView()" method > > on > > >>> the > > >>> > > > >> > interface. > > >>> > > > >> > > >> Might > > >>> > > > >> > > >> >>>> help > > >>> > > > >> > > >> >>>> >>>> to > > >>> > > > >> > > >> >>>> >>>> cut down on file sizes, and API surface, > but > > >>> > > > >> > > >> >>>> >>>> again, I'm not too > > >>> > > > >> > > >> sure. > > >>> > > > >> > > >> >>>> >>>> > > >>> > > > >> > > >> >>>> >>>> I've been pretty hesitant to touch existing > > >>> > > > >> > > >> >>>> >>>> exposed members > > >>> > > > >> > > >> (e.g. the > > >>> > > > >> > > >> >>>> >>>> public fields you were referring to) since > > >>> > > > >> > > >> >>>> >>>> touching anything > > >>> > > > >> > > >> public > > >>> > > > >> > > >> >>>> could > > >>> > > > >> > > >> >>>> >>>> break plugins. That said, maybe now is a > good > > >>> time > > >>> > > > >> > > >> >>>> >>>> to @deprecate > > >>> > > > >> > > >> a > > >>> > > > >> > > >> >>>> bunch > > >>> > > > >> > > >> >>>> >>>> of > > >>> > > > >> > > >> >>>> >>>> them and either replace them with getters, > or > > >>> just > > >>> > > > >> > > >> >>>> >>>> declare them > > >>> > > > >> > > >> to be > > >>> > > > >> > > >> >>>> not > > >>> > > > >> > > >> >>>> >>>> exposed to plugins. > > >>> > > > >> > > >> >>>> >>>> > > >>> > > > >> > > >> >>>> >>>> > > >>> > > > >> > > >> >>>> >>>> On Wed, Mar 5, 2014 at 6:57 PM, Joe Bowser > > >>> > > > >> > > >> >>>> >>>> <bows...@gmail.com> > > >>> > > > >> > > >> wrote: > > >>> > > > >> > > >> >>>> >>>> > > >>> > > > >> > > >> >>>> >>>> > So, after looking at the Crosswalk code > > again, > > >>> > > > >> > > >> >>>> >>>> > I've decided to > > >>> > > > >> > > >> take > > >>> > > > >> > > >> >>>> a > > >>> > > > >> > > >> >>>> >>>> > quick stab at making things pluggable. I > > don't > > >>> > > > >> > > >> >>>> >>>> > have a lot to > > >>> > > > >> > > >> show > > >>> > > > >> > > >> >>>> for > > >>> > > > >> > > >> >>>> >>>> > it, but with the help of Eclipse (which > is > > why > > >>> > > > >> > > >> >>>> >>>> > the generated interfaces look so screwed > > up), I > > >>> > > > >> > > >> >>>> >>>> > managed to create some > > >>> > > > >> > > >> interfaces > > >>> > > > >> > > >> >>>> so > > >>> > > > >> > > >> >>>> >>>> > we can start shoehorning in other browser > > >>> > renderers. > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> > > >>> https://github.com/infil00p/cordova-android/tree/pluggable_w > > >>> > > > >> > > >> eb > > >>> > > > >> > > >> vie > > >>> > > > >> > > >> w > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> >>>> >>>> > I'm going to probably start with > Crosswalk, > > >>> > > > >> > > >> >>>> >>>> > because it's > > >>> > > > >> > > >> probably > > >>> > > > >> > > >> >>>> the > > >>> > > > >> > > >> >>>> >>>> > most mature primary candidate in the > > Android > > >>> > > > >> > > >> >>>> >>>> > Third-Party > > >>> > > > >> > > >> WebView > > >>> > > > >> > > >> >>>> >>>> > thing, and I'm pretty sure the GeckoView > > will > > >>> be > > >>> > > > >> > > >> >>>> >>>> > happening > > >>> > > > >> > > >> shortly > > >>> > > > >> > > >> >>>> >>>> > after. > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> >>>> >>>> > I don't know how this would work w.r.t. > > the CLI > > >>> > > > >> > > >> >>>> >>>> > or our > > >>> > > > >> > > >> workflow at > > >>> > > > >> > > >> >>>> >>>> > all, but at the moment, I really just > want > > to > > >>> at > > >>> > > > >> > > >> >>>> >>>> > least start > > >>> > > > >> > > >> to have > > >>> > > > >> > > >> >>>> >>>> > some headway towards 4.x and PhoneGap > day. > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> >>>> >>>> > What do people think of this so far? I'm > > going > > >>> > > > >> > > >> >>>> >>>> > to try to clean > > >>> > > > >> > > >> >>>> things > > >>> > > > >> > > >> >>>> >>>> > up a bit, since we've definitely done a > > lot of > > >>> > > > >> > > >> >>>> >>>> > things that > > >>> > > > >> > > >> would > > >>> > > > >> > > >> >>>> make > > >>> > > > >> > > >> >>>> >>>> > first year CS profs freak the hell out > > (i.e. > > >>> > > > >> > > >> >>>> >>>> > public members in > > >>> > > > >> > > >> >>>> public > > >>> > > > >> > > >> >>>> >>>> > objects w.r.t. PluginManager). > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> >>>> >>>> > Thoughts? > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> >>>> >>>> > Joe > > >>> > > > >> > > >> >>>> >>>> > > > >>> > > > >> > > >> >>>> >>>> > > >>> > > > >> > > >> >>>> >>> > > >>> > > > >> > > >> >>>> >>> > > >>> > > > >> > > >> >>>> > > >>> > > > >> > > >> > > >>> > > > >> > > > >>> > > > >>> > > >