Page 1 of 6

NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 3:33 pm
by Tazzi
The MOST common question I have ever received is "Do you have someone in (insert country/state/suburb here) that can program this?". It genuinely kills me when I have to say no, and that an item needs to be shipped in to be reprogrammed. This is primarily due to the complexity of the programming procedure, complexity of the software to be made and also the cost of a capable scantool (Which can be many hundreds).

Recently I had a client ask "Why don't you have a phone app to do it?", and I realized I did not really have an answer for that!
With the work I have been doing with Pete and OBDX Pro, we have a solution that allows connection to both Android and iOS smartphones which will be suitable for all Global A vehicles (Plus I snuck in ALDL too).

This then brought on the smarphone revolution for myself, a completely new concept for me having to worry about space, view area, flash memory and ram usage ect.
Its quite the change from PC software, but its surprisingly been alot of fun. :D

My main priority has been to make something thats so simple to use, that anyone can use it.
I wanted an all in one flash tool, that can do absolutely anything I can do currently.
Plus I wanted to be as simple as it sounded, so I introduce to you... NVS Easy Flash.
Easy Flash Home Screen500px.jpg
Easy Flash Home Screen500px.jpg (71.62 KiB) Viewed 4284 times
Easy Flash Module Preview500px.jpg
Easy Flash Module Preview500px.jpg (49.29 KiB) Viewed 4284 times
Easy Flash Program Preview500px.jpg
Easy Flash Program Preview500px.jpg (52.74 KiB) Viewed 4284 times
I am finally at a point where I can maintain a progress thread as its now at a point of adding various module support as the main framework has been completed, although there is still a huge list on the todo list!
Just some of the things include:
1) Complete the BLE integration for iOS (Prototype template in place for basic communication)
2) Implement recovery modes in models which support
3) lockout programming when voltage detected is too low
4) Reconnect scantool in event of dropoff and reconfigure tool to current selected vehicle module
5) Implement ALDL processing (Currently only done HSCAN and GMLAN)
6) Implement Googles Material Design method to maintain consistency between iOS and Android apps.
7) Honestly so much server bullshit that it makes me want to smash the pc. :lol:

As always, I will be wanting to send out some freebies to those that have something to test on and are active on the forum.
I am probably a couple weeks to a month off of that stage, but almost there!

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 3:40 pm
by Gareth
:thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup:

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 3:50 pm
by Tazzi
That just made my day Gareth.. I had to scroll so much longer then I expected! :lol:

As for supported vehicles and modules, I will be starting off with the VE and VF Holden commodores to support all major modules for custom options and security linking.
Moving next to the VT-VZ to add a few basic things, then onto the other Holden models including Colorado's, Astras, ect.
Eventually once the Holdens are at a point I am happy with, it will be time to add in other GM vehicles which I have been extensively working with for years now such as GMC, Chev, Cadillac ect.

Its primary use will be relinking replacement modules and changing their configurations. Newer vehicles will have some more advanced options for reprogramming custom options since they tend to have more options then older.

The app does require internet access to use as all security based items are server based (unlock algos ect) which also helps reduce application size and allows updates to take place without the app actually requiring an update. It also ensures I can disable a feature in the event it requires changes or alternations.
Finally, online based also allows backing up vehicle module configurations in the event a backup/recovery is required.

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 3:56 pm
by VX L67 Getrag
Sounds good, look forward to see how it works!

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 4:12 pm
by In-Tech
Hiya Tazzi,
am I understanding correct that this is strictly a phone app or will it work on pc as well?

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 4:23 pm
by Tazzi
In-Tech wrote:Hiya Tazzi,
am I understanding correct that this is strictly a phone app or will it work on pc as well?
In a couple months time when Microsoft finishes their new system, it will be Android, iOS, MAC and PC.

Currently it is Android and iOS smartphones only.

MAC and PC will both be USB connection only.

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 5:28 pm
by Charlescrown
Great work Tazzi. I hope you make some big bucks out of this. I remember the days working with you with OBD2 stuff.

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 5:36 pm
by Tazzi
Charlescrown wrote:Great work Tazzi. I hope you make some big bucks out of this. I remember the days working with you with OBD2 stuff.
To be honest, I do not care about the dollars so much.

I want to go back to the roots of what started it all for me, and make things that are affordable and available to everyone. Considering most modules can be flashed in under 20seconds, its shouldnt be left to only a select few.

I just allocated 1000pcs of processors to begin production of the new cable :thumbup:

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 5:51 pm
by immortality
Nice. Looking forward to seeing this role out.

Re: NVS Easy Flash - Development Thread

Posted: Thu Jul 15, 2021 6:38 pm
by The1
hats off to you mate, mobile programming is another ballgame to me.