Quisque ligulas ipsum, euismod atras vulputate iltricies etri elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla nunc dui, tristique in semper vel, congue sed ligula. Nam dolor ligula, faucibus id sodales in, auctor fringilla libero. Pellentesque pellentesque tempor tellus eget hendrerit. Morbi id aliquam ligula. Aliquam id dui sem. Proin rhoncus consequat nisl, eu ornare mauris tincidunt vitae.

Vestibulum sodales ante a purus volutpat euismod. Proin sodales quam nec ante sollicitudin lacinia. Ut egestas bibendum tempor. Morbi non nibh sit amet ligula blandit ullamcorper in nec risus. Pellentesque fringilla diam faucibus tortor bibendum vulputate. Etiam turpis urna, rhoncus et mattis ut, dapibus eu nunc. Nunc sed aliquet nisi. Nullam ut magna non lacus adipiscing volutpat. Aenean odio mauris, consectetur quis consequat quis, blandit a nunc. Sed orci erat, placerat ac interdum ut, suscipit eu augue. Nunc vitae mi tortor. Ut vel justo quis lectus elementum ullamcorper volutpat vel libero.

Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris euismod placerat sit amet ut metus. Sed imperdiet fringilla sem eget euismod. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque adipiscing, neque ut pulvinar tincidunt, est sem euismod odio, eu ullamcorper turpis nisl sit amet velit. Nullam vitae nibh odio, non scelerisque nibh. Vestibulum ut est augue, in varius purus.

Proin dictum lobortis justo at pretium. Nunc malesuada ante sit amet purus ornare pulvinar. Donec suscipit dignissim ipsum at euismod. Curabitur malesuada lorem sed metus adipiscing in vehicula quam commodo. Sed porttitor elementum elementum. Proin eu ligula eget leo consectetur sodales et non mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Nunc tincidunt, elit non cursus euismod, lacus augue ornare metus, egestas imperdiet nulla nisl quis mauris. Suspendisse a pharetra urna. Morbi dui lectus, pharetra nec elementum eget, vulputate ut nisi. Aliquam accumsan, nulla sed feugiat vehicula, lacus justo semper libero, quis porttitor turpis odio sit amet ligula. Duis dapibus fermentum orci, nec malesuada libero vehicula ut. Integer sodales, urna eget interdum eleifend, nulla nibh laoreet nisl, quis dignissim mauris dolor eget mi. Donec at mauris enim. Duis nisi tellus, adipiscing a convallis quis, tristique vitae risus. Nullam molestie gravida lobortis. Proin ut nibh quis felis auctor ornare. Cras ultricies, nibh at mollis faucibus, justo eros porttitor mi, quis auctor lectus arcu sit amet nunc. Vivamus gravida vehicula arcu, vitae vulputate augue lacinia faucibus.

Ut porttitor euismod cursus. Mauris suscipit, turpis ut dapibus rhoncus, odio erat egestas orci, in sollicitudin enim erat id est. Sed auctor gravida arcu, nec fringilla orci aliquet ut. Nullam eu pretium purus. Maecenas fermentum posuere sem vel posuere. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ornare convallis lectus a faucibus. Praesent et urna turpis. Fusce tincidunt augue in velit tincidunt sed tempor felis porta. Nunc sodales, metus ut vestibulum ornare, est magna laoreet lectus, ut adipiscing massa odio sed turpis. In nec lorem porttitor urna consequat sagittis. Nullam eget elit ante. Pellentesque justo urna, semper nec faucibus sit amet, aliquam at mi. Maecenas eget diam nec mi dignissim pharetra.

Quisque ligulas ipsum, euismod atras vulputate iltricies etri elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla nunc dui, tristique in semper vel, congue sed ligula. Nam dolor ligula, faucibus id sodales in, auctor fringilla libero. Pellentesque pellentesque tempor tellus eget hendrerit. Morbi id aliquam ligula. Aliquam id dui sem. Proin rhoncus consequat nisl, eu ornare mauris tincidunt vitae.

Vestibulum sodales ante a purus volutpat euismod. Proin sodales quam nec ante sollicitudin lacinia. Ut egestas bibendum tempor. Morbi non nibh sit amet ligula blandit ullamcorper in nec risus. Pellentesque fringilla diam faucibus tortor bibendum vulputate. Etiam turpis urna, rhoncus et mattis ut, dapibus eu nunc. Nunc sed aliquet nisi. Nullam ut magna non lacus adipiscing volutpat. Aenean odio mauris, consectetur quis consequat quis, blandit a nunc. Sed orci erat, placerat ac interdum ut, suscipit eu augue. Nunc vitae mi tortor. Ut vel justo quis lectus elementum ullamcorper volutpat vel libero.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exercitation.

Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris euismod placerat sit amet ut metus. Sed imperdiet fringilla sem eget euismod. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque adipiscing, neque ut pulvinar tincidunt, est sem euismod odio, eu ullamcorper turpis nisl sit amet velit. Nullam vitae nibh odio, non scelerisque nibh. Vestibulum ut est augue, in varius purus.

Proin dictum lobortis justo at pretium. Nunc malesuada ante sit amet purus ornare pulvinar. Donec suscipit dignissim ipsum at euismod. Curabitur malesuada lorem sed metus adipiscing in vehicula quam commodo. Sed porttitor elementum elementum. Proin eu ligula eget leo consectetur sodales et non mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Nunc tincidunt, elit non cursus euismod, lacus augue ornare metus, egestas imperdiet nulla nisl quis mauris. Suspendisse a pharetra urna. Morbi dui lectus, pharetra nec elementum eget, vulputate ut nisi. Aliquam accumsan, nulla sed feugiat vehicula, lacus justo semper libero, quis porttitor turpis odio sit amet ligula. Duis dapibus fermentum orci, nec malesuada libero vehicula ut. Integer sodales, urna eget interdum eleifend, nulla nibh laoreet nisl, quis dignissim mauris dolor eget mi. Donec at mauris enim. Duis nisi tellus, adipiscing a convallis quis, tristique vitae risus. Nullam molestie gravida lobortis. Proin ut nibh quis felis auctor ornare. Cras ultricies, nibh at mollis faucibus, justo eros porttitor mi, quis auctor lectus arcu sit amet nunc. Vivamus gravida vehicula arcu, vitae vulputate augue lacinia faucibus.

Ut porttitor euismod cursus. Mauris suscipit, turpis ut dapibus rhoncus, odio erat egestas orci, in sollicitudin enim erat id est. Sed auctor gravida arcu, nec fringilla orci aliquet ut. Nullam eu pretium purus. Maecenas fermentum posuere sem vel posuere. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ornare convallis lectus a faucibus. Praesent et urna turpis. Fusce tincidunt augue in velit tincidunt sed tempor felis porta. Nunc sodales, metus ut vestibulum ornare, est magna laoreet lectus, ut adipiscing massa odio sed turpis. In nec lorem porttitor urna consequat sagittis. Nullam eget elit ante. Pellentesque justo urna, semper nec faucibus sit amet, aliquam at mi. Maecenas eget diam nec mi dignissim pharetra.

 

Quisque ligula ipsum, euismod aturesit vulputate a, ultricies et elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla nunc dui, tristique in semper vel, congue sed ligula. Nam dolor ligula, faucibus id sodales in, auctor fringilla libero. Pellentesque pellentesque tempor tellus eget hendrerit. Morbi id aliquam ligula. Aliquam id dui sem. Proin rhoncus consequat nisl, eu ornare mauris tincidunt vitae.

Vestibulum sodales ante a purus volutpat euismod. Proin sodales quam nec ante sollicitudin lacinia. Ut egestas bibendum tempor. Morbi non nibh sit amet ligula blandit ullamcorper in nec risus. Pellentesque fringilla diam faucibus tortor bibendum vulputate. Etiam turpis urna, rhoncus et mattis ut, dapibus eu nunc. Nunc sed aliquet nisi. Nullam ut magna non lacus adipiscing volutpat. Aenean odio mauris, consectetur quis consequat quis, blandit a nunc. Sed orci erat, placerat ac interdum ut, suscipit eu augue. Nunc vitae mi tortor. Ut vel justo quis lectus elementum ullamcorper volutpat vel libero.

Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris euismod placerat sit amet ut metus. Sed imperdiet fringilla sem eget euismod. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque adipiscing, neque ut pulvinar tincidunt, est sem euismod odio, eu ullamcorper turpis nisl sit amet velit. Nullam vitae nibh odio, non scelerisque nibh. Vestibulum ut est augue, in varius purus.

Proin dictum lobortis justo at pretium. Nunc malesuada ante sit amet purus ornare pulvinar. Donec suscipit dignissim ipsum at euismod. Curabitur malesuada lorem sed metus adipiscing in vehicula quam commodo. Sed porttitor elementum elementum. Proin eu ligula eget leo consectetur sodales et non mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Nunc tincidunt, elit non cursus euismod, lacus augue ornare metus, egestas imperdiet nulla nisl quis mauris. Suspendisse a pharetra urna. Morbi dui lectus, pharetra nec elementum eget, vulputate ut nisi. Aliquam accumsan, nulla sed feugiat vehicula, lacus justo semper libero, quis porttitor turpis odio sit amet ligula. Duis dapibus fermentum orci, nec malesuada libero vehicula ut. Integer sodales, urna eget interdum eleifend, nulla nibh laoreet nisl, quis dignissim mauris dolor eget mi. Donec at mauris enim. Duis nisi tellus, adipiscing a convallis quis, tristique vitae risus. Nullam molestie gravida lobortis. Proin ut nibh quis felis auctor ornare. Cras ultricies, nibh at mollis faucibus, justo eros porttitor mi, quis auctor lectus arcu sit amet nunc. Vivamus gravida vehicula arcu, vitae vulputate augue lacinia faucibus.

Ut porttitor euismod cursus. Mauris suscipit, turpis ut dapibus rhoncus, odio erat egestas orci, in sollicitudin enim erat id est. Sed auctor gravida arcu, nec fringilla orci aliquet ut. Nullam eu pretium purus. Maecenas fermentum posuere sem vel posuere. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ornare convallis lectus a faucibus. Praesent et urna turpis. Fusce tincidunt augue in velit tincidunt sed tempor felis porta. Nunc sodales, metus ut vestibulum ornare, est magna laoreet lectus, ut adipiscing massa odio sed turpis. In nec lorem porttitor urna consequat sagittis. Nullam eget elit ante. Pellentesque justo urna, semper nec faucibus sit amet, aliquam at mi. Maecenas eget diam nec mi dignissim pharetra.

Quisque ligula ipsum, euismod a vulputate a, ultricies et elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla nunc dui, tristique in semper vel, congue sed ligula. Nam dolor ligula, faucibus id sodales in, auctor fringilla libero. Pellentesque pellentesque tempor tellus eget hendrerit. Morbi id aliquam ligula. Aliquam id dui sem. Proin rhoncus consequat nisl, eu ornare mauris tincidunt vitae.

Vestibulum sodales ante a purus volutpat euismod. Proin sodales quam nec ante sollicitudin lacinia. Ut egestas bibendum tempor. Morbi non nibh sit amet ligula blandit ullamcorper in nec risus. Pellentesque fringilla diam faucibus tortor bibendum vulputate. Etiam turpis urna, rhoncus et mattis ut, dapibus eu nunc. Nunc sed aliquet nisi. Nullam ut magna non lacus adipiscing volutpat. Aenean odio mauris, consectetur quis consequat quis, blandit a nunc. Sed orci erat, placerat ac interdum ut, suscipit eu augue. Nunc vitae mi tortor. Ut vel justo quis lectus elementum ullamcorper volutpat vel libero.

Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris euismod placerat sit amet ut metus. Sed imperdiet fringilla sem eget euismod. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque adipiscing, neque ut pulvinar tincidunt, est sem euismod odio, eu ullamcorper turpis nisl sit amet velit. Nullam vitae nibh odio, non scelerisque nibh. Vestibulum ut est augue, in varius purus.

Proin dictum lobortis justo at pretium. Nunc malesuada ante sit amet purus ornare pulvinar. Donec suscipit dignissim ipsum at euismod. Curabitur malesuada lorem sed metus adipiscing in vehicula quam commodo. Sed porttitor elementum elementum. Proin eu ligula eget leo consectetur sodales et non mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Nunc tincidunt, elit non cursus euismod, lacus augue ornare metus, egestas imperdiet nulla nisl quis mauris. Suspendisse a pharetra urna. Morbi dui lectus, pharetra nec elementum eget, vulputate ut nisi. Aliquam accumsan, nulla sed feugiat vehicula, lacus justo semper libero, quis porttitor turpis odio sit amet ligula. Duis dapibus fermentum orci, nec malesuada libero vehicula ut. Integer sodales, urna eget interdum eleifend, nulla nibh laoreet nisl, quis dignissim mauris dolor eget mi. Donec at mauris enim. Duis nisi tellus, adipiscing a convallis quis, tristique vitae risus. Nullam molestie gravida lobortis. Proin ut nibh quis felis auctor ornare. Cras ultricies, nibh at mollis faucibus, justo eros porttitor mi, quis auctor lectus arcu sit amet nunc. Vivamus gravida vehicula arcu, vitae vulputate augue lacinia faucibus.

Ut porttitor euismod cursus. Mauris suscipit, turpis ut dapibus rhoncus, odio erat egestas orci, in sollicitudin enim erat id est. Sed auctor gravida arcu, nec fringilla orci aliquet ut. Nullam eu pretium purus. Maecenas fermentum posuere sem vel posuere. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ornare convallis lectus a faucibus. Praesent et urna turpis. Fusce tincidunt augue in velit tincidunt sed tempor felis porta. Nunc sodales, metus ut vestibulum ornare, est magna laoreet lectus, ut adipiscing massa odio sed turpis. In nec lorem porttitor urna consequat sagittis. Nullam eget elit ante. Pellentesque justo urna, semper nec faucibus sit amet, aliquam at mi. Maecenas eget diam nec mi dignissim pharetra.

Quisque ligula ipsum, euismod a vulputate a, ultricies et elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla nunc dui, tristique in semper vel, congue sed ligula. Nam dolor ligula, faucibus id sodales in, auctor fringilla libero. Pellentesque pellentesque tempor tellus eget hendrerit. Morbi id aliquam ligula. Aliquam id dui sem. Proin rhoncus consequat nisl, eu ornare mauris tincidunt vitae.

Vestibulum sodales ante a purus volutpat euismod. Proin sodales quam nec ante sollicitudin lacinia. Ut egestas bibendum tempor. Morbi non nibh sit amet ligula blandit ullamcorper in nec risus. Pellentesque fringilla diam faucibus tortor bibendum vulputate. Etiam turpis urna, rhoncus et mattis ut, dapibus eu nunc. Nunc sed aliquet nisi. Nullam ut magna non lacus adipiscing volutpat. Aenean odio mauris, consectetur quis consequat quis, blandit a nunc. Sed orci erat, placerat ac interdum ut, suscipit eu augue. Nunc vitae mi tortor. Ut vel justo quis lectus elementum ullamcorper volutpat vel libero.

Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris euismod placerat sit amet ut metus. Sed imperdiet fringilla sem eget euismod. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque adipiscing, neque ut pulvinar tincidunt, est sem euismod odio, eu ullamcorper turpis nisl sit amet velit. Nullam vitae nibh odio, non scelerisque nibh. Vestibulum ut est augue, in varius purus.

Proin dictum lobortis justo at pretium. Nunc malesuada ante sit amet purus ornare pulvinar. Donec suscipit dignissim ipsum at euismod. Curabitur malesuada lorem sed metus adipiscing in vehicula quam commodo. Sed porttitor elementum elementum. Proin eu ligula eget leo consectetur sodales et non mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Nunc tincidunt, elit non cursus euismod, lacus augue ornare metus, egestas imperdiet nulla nisl quis mauris. Suspendisse a pharetra urna. Morbi dui lectus, pharetra nec elementum eget, vulputate ut nisi. Aliquam accumsan, nulla sed feugiat vehicula, lacus justo semper libero, quis porttitor turpis odio sit amet ligula. Duis dapibus fermentum orci, nec malesuada libero vehicula ut. Integer sodales, urna eget interdum eleifend, nulla nibh laoreet nisl, quis dignissim mauris dolor eget mi. Donec at mauris enim. Duis nisi tellus, adipiscing a convallis quis, tristique vitae risus. Nullam molestie gravida lobortis. Proin ut nibh quis felis auctor ornare. Cras ultricies, nibh at mollis faucibus, justo eros porttitor mi, quis auctor lectus arcu sit amet nunc. Vivamus gravida vehicula arcu, vitae vulputate augue lacinia faucibus.

Ut porttitor euismod cursus. Mauris suscipit, turpis ut dapibus rhoncus, odio erat egestas orci, in sollicitudin enim erat id est. Sed auctor gravida arcu, nec fringilla orci aliquet ut. Nullam eu pretium purus. Maecenas fermentum posuere sem vel posuere. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ornare convallis lectus a faucibus. Praesent et urna turpis. Fusce tincidunt augue in velit tincidunt sed tempor felis porta. Nunc sodales, metus ut vestibulum ornare, est magna laoreet lectus, ut adipiscing massa odio sed turpis. In nec lorem porttitor urna consequat sagittis. Nullam eget elit ante. Pellentesque justo urna, semper nec faucibus sit amet, aliquam at mi. Maecenas eget diam nec mi dignissim pharetra.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac ipsum purus. Proin varius urna eget massa feugiat vel imperdiet nibh dictum. Donec ut felis id enim tristique hendrerit id nec ante. Curabitur a nulla risus. Quisque quam nibh, egestas vitae vestibulum nec, auctor non mauris. Mauris condimentum, metus id ultrices placerat, dui elit rhoncus felis, vitae facilisis sem massa eu ipsum doloeres ipsums sadips.

In lacinia volutpat nibh id rutrum. Vestibulum nec velit purus, rhoncus pellentesque metus. Praesent lacinia mollis erat, ut mattis augue lacinia id. Pellentesque tellus lorem, gravida eu semper non, euismod sit amet diam. Sed lobortis eros laoreet metus dignissim sed convallis enim semper. Maecenas euismod gravida vehicula. Sed pellentesque, elit ut tristique commodo, risus enim blandit est, ut fringilla nibh neque eget sem. Nullam mollis enim id metus sodales molestie.

Aenean ullamcorper interdum neque non auctor. Nam tellus sapien, accumsan sit amet consectetur sit amet, varius sit amet felis. Nulla sit amet tellus orci. Duis pretium eleifend augue, in pulvinar tortor consectetur a. Pellentesque metus tellus, auctor suscipit iaculis non, blandit vitae justo. Aenean blandit nulla sit amet ipsum iaculis blandit. Nam auctor ultricies tellus, sed feugiat lacus tempus vel. Suspendisse pretium, ante in ornare dapibus, est arcu tristique orci, a auctor est orci et leo. Aenean fringilla hendrerit ante, nec tempor justo facilisis sed. In lacinia lacus molestie odio accumsan in pretium est molestie. Donec lobortis, ante eget consequat placerat, risus dui imperdiet enim, at rhoncus nisi augue sit amet justo. Nullam in odio non felis eleifend volutpat. Nunc non velit orci, ac pretium urna. Sed nisl lacus, tincidunt vitae auctor sed, varius ut est. Sed non nisl vitae enim consectetur volutpat a at dolor. Donec tincidunt lacus ut risus luctus sollicitudin.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec eros eget nisl fringilla commodo. Maecenas ornare, augue ut ultricies tristique, enim lectus pretium quam, quis bibendum metus tellus sed magna. Donec eu dolor lacus. Mauris sit amet augue in odio venenatis interdum. Cras auctor hendrerit velit, non feugiat dolor semper non. Proin quis felis gravida justo vehicula congue. Etiam pellentesque faucibus justo, vitae ornare magna elementum nec. Vestibulum sed magna lorem. Etiam non felis magna. Cras tristique viverra lorem, ac congue odio pharetra sollicitudin. Integer elementum mollis nisl, ac placerat ante consequat congue. Fusce scelerisque adipiscing euismod. Donec pharetra pellentesque ligula, id elementum mi aliquet nec. Vivamus arcu mauris, condimentum sed rutrum vitae, tincidunt viverra risus. Duis augue magna, semper convallis lobortis vel, euismod non nibh.

Duis nec vehicula quam. Sed ut nisl diam, ut consequat justo. Nulla tellus augue, suscipit a consectetur vel, imperdiet quis urna. Sed non viverra elit. Aliquam condimentum mi dolor, at aliquam velit. Maecenas et arcu orci. Donec viverra feugiat urna quis tristique. Fusce neque augue, congue quis congue id, molestie malesuada risus. Donec at felis velit, interdum tempor mi. In massa dui, auctor eu feugiat a, ultricies quis purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;

Vivamus congue, est id aliquam feugiat, ipsum est molestie sapien, at malesuada dolor risus sit amet enim. Quisque fringilla tincidunt convallis. Proin libero est, fringilla id fringilla sed, condimentum non justo. Fusce sed lectus id orci lobortis mollis sed eu sapien. Fusce interdum porttitor dolor nec lobortis. Pellentesque eleifend, ipsum ac blandit pretium, arcu justo aliquet ante, non pulvinar urna erat sit amet tellus. Nunc id nulla tellus, quis tempor ante. Nulla eu purus condimentum odio commodo cursus. Sed eu purus dui.

Mauris dui erat, accumsan vel cursus vel, cursus vel sem. Pellentesque tempor dignissim libero, sed imperdiet mi feugiat nec. Nulla augue dui, sodales eget accumsan ac, molestie ac erat. Proin ut sodales metus. Phasellus a turpis odio. Nulla dapibus, mi ornare bibendum ullamcorper, lectus turpis rhoncus nisl, eu suscipit eros erat ac lacus. Quisque cursus tempor felis ut sodales.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam viverra euismod odio, gravida pellentesque urna varius vitae. Sed dui lorem, adipiscing in adipiscing et, interdum nec metus. Mauris ultricies, justo eu convallis placerat, felis enim ornare nisi, vitae mattis nulla ante id dui. Ut lectus purus, commodo et tincidunt vel, interdum sed lectus. Vestibulum adipiscing tempor nisi id elementum. In adipiscing diam sed mi rhoncus gravida aliquam. Pellentesque malesuada velit vitae nisl rhoncus vel interdum ligula viverra.

Etiam rutrum elit sed nunc convallis fermentum. Aliquam mi odio, sollicitudin quis cursus non, aliquet sed nulla. Donec adipiscing mattis sagittis. Etiam faucibus imperdiet libero, sit amet placerat tortor tristique commodo. Suspendisse id turpis vel justo porttitor convallis a eu nunc. Sed urna dolor, mattis ut hendrerit non, consequat sed leo. Mauris fringilla volutpat pretium. Etiam vel est quis diam placerat rutrum nec et orci. Nam sollicitudin, ipsum scelerisque lobortis dignissim, nisl turpis adipiscing augue, dictum placerat ipsum dolor in nulla. Nullam accumsan dictum arcu sed elementum. Nullam gravida, diam in egestas elementum, leo eros semper urna, sed interdum justo dui quis lorem.

Donec euismod mattis interdum. Nam ut tincidunt sem. Praesent quis eros id justo hendrerit laoreet quis ac metus. Pellentesque a libero id orci ornare pellentesque. Donec massa ante, aliquam ac fringilla vel, facilisis id lacus. Nunc tincidunt molestie quam a semper. Nullam eu odio sed ligula volutpat posuere. Vivamus imperdiet ultrices velit, id ullamcorper libero placerat non. Aliquam nec velit massa. Phasellus vel consequat massa. Phasellus tempor tellus vel metus rhoncus posuere et sed tellus. Aliquam erat volutpat.

In a justo ut nunc lobortis eleifend non ac odio. In hac habitasse platea dictumst. Ut eget ligula at urna varius interdum. Nunc mi lectus, egestas eu facilisis nec, imperdiet sit amet leo. Suspendisse leo nisl, ultricies et tristique posuere, viverra nec purus. In tempus vestibulum lacus, ut condimentum arcu fringilla nec. Praesent aliquet ullamcorper mi in malesuada. Mauris tellus lectus, imperdiet in placerat ac, interdum vel velit. Mauris purus enim, ultricies et fringilla et, sagittis auctor magna. Etiam vitae lorem justo. Curabitur eu nibh luctus justo molestie vestibulum. Proin vitae felis ante, at pharetra erat.

Quisque a justo magna. Curabitur nec dui non massa tempor dictum. Pellentesque leo lacus, venenatis quis rhoncus eu, vulputate sed ante. Mauris mattis tempus velit vel lacinia. Suspendisse faucibus, erat ut gravida rhoncus, sapien eros ullamcorper felis, et cursus purus magna id mi. Fusce dictum facilisis augue at interdum. In quam nunc, vestibulum ut posuere ut, sodales sed ipsum. Donec aliquam mauris vel augue accumsan molestie. Vestibulum blandit tristique odio eu tincidunt. Cras lobortis tempus purus. Vestibulum rutrum adipiscing vehicula. Aliquam sollicitudin massa at sapien eleifend nec dignissim neque volutpat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas congue, odio sit amet elementum volutpat, nunc ante bibendum nibh, at volutpat enim tellus et arcu.

Cras id erat arcu. Suspendisse nec lacinia eros. Morbi in nisl ut quam vulputate elementum. Donec ornare, turpis eget rhoncus pharetra, nunc augue porta orci, eu volutpat enim nisi ac risus. Proin a tortor id orci fermentum sollicitudin tincidunt in magna. Quisque semper, leo a malesuada dictum, orci massa blandit diam, nec porttitor quam nunc laoreet odio. Maecenas sed felis ante, non cursus justo. Vivamus semper euismod vulputate. Praesent a hendrerit sapien. Sed dapibus leo rutrum lorem convallis et commodo urna tempus. Quisque hendrerit imperdiet erat id fringilla. Vivamus vitae odio nisi, sit amet pellentesque justo. Pellentesque enim enim, ultricies sit amet blandit a, sagittis vel dolor. Cras lorem purus, posuere sed hendrerit ac, varius vel eros. Quisque nisl ante, posuere pulvinar bibendum a, malesuada sed mi.

Remember the old saying, “Everyone is talking about the weather, but nobody is doing anything about it?” That’s pretty much the case when it comes to using the cloud as part of a software QA process.

In research conducted by SD Times in July, we asked, “At what stage is your company, or companies that you consult, using the cloud for software testing?” Very few respondents indicated that they use the cloud in this way:

At what stage is your company, or companies that you consult, using the cloud for software testing?

We are using the cloud for software testing on a routine basis 7.9%
We are experimenting with using the cloud for software testing 17.3%
We are studying the technology but have not started yet 26.7%
No plans to use the cloud for software testing 39.6%
Don’t know 8.4%

When it comes to software quality assurance, what happens in Vegas stays in Vegas most of the time. Or to put it more clearly, the activity usually but not always is conducted by the organization’s employees:

Does your company outsource any of its software quality assurance or testing?

Yes, all of it 4.4%
Yes, some of it 26.6%
No, none of it 65.0%
Don’t know 3.9%

There’s no one favorite model about where testing lives. Is it part of the development group? Is it separate? Is it sometimes separate and sometimes integrated? The answers were surprisingly evenly split.

Does your organization have separate development and test teams?

All test and development teams are integrated 30.2%
All development teams and test/QA teams are separate 32.7%
Some development and test/QA teams are separate, some are integrated 34.6%
Don’t know 2.4%

Enterprise developers can’t simply throw the code over the metaphorical wall once it was completed and let other IT staff take complete responsibility for quality assurance – even after deployment.

We asked, “Who is responsible for internally-developed application performance testing and monitoring in your company?” with separate answers for prior to deployment and after deployment. The answers showed that developers still responsibility after deployment – and sysadmins were in the loop during the development process.

Who is responsible for internally-developed application performance testing and monitoring in your company?

Software/Application Developers prior to deployment 60.8%, after deployment 47.7%
Software/Application Development Management prior to deployment 52.8%, after deployment 53.8%
Testers prior to deployment 50.3%, after deployment 41.5%
Testing Management prior to deployment 48.7%, after deployment 38.5%
IT top management (development) (VP or above) prior to deployment 36.7%, after deployment 34.6%
Systems administrators prior to deployment 24.1%, after deployment 45.4%
Networking personnel prior to deployment 21.5%, after deployment 31.5%

When it comes to software quality assurance, one thing is for certain: We are all in it together.

Z Trek Copyright (c) Alan Zeichick

When it comes to writing code with advanced numerical functions, my advice is clear: Use libraries. Don’t roll your own algorithms.

Generally speaking, I’m a fan of modular code reuse, especially for complex functions like UI controls, database access drivers, PDF generation or managing images. Most of the time, it’s a good idea to find open-source components that will get your job done, or license commercial reusable components. Sometimes, though, it makes more sense to write your own functionality.

Numerical libraries are the exception. Unless you are in the math business, resist the temptation to write your own Fast Fourier Transform (FFT) functions, random number generators, basic linear algebra subprogram (BLAS), wavelets, Eigenvalues, partial differential equations – you get the picture.

This came up thanks to an email from an SD Times subscriber:

I’m an IT consultant in the software arena and would like to ask you a question on buying mathematical algorithms vs. programming them yourself. Especially for complicated mathematical subroutines, is it cost-effective to subscribe to an algorithm library, or let your programmers do all the work?

Advanced numerical algorithms are very hard to get right. Simply writing the basic code is complicated – and so is the testing of that code, to make sure that each routine delivers consistently correct results in all cases – including across different processors, hardware architectures, programming languages, compilers, runtimes, standard libraries, and so-on.

Incredible amounts of work have gone into designing, coding and testing most high-end numerical libraries. What’s more, the code has been reviewed by many individuals, including both practical and theoretical mathematicians. Generally speaking, you can be confident that the math is correct.

Beyond consistent correctness, there’s also efficiency. You’re not running that FFT or BLAS routine once; it’s being executed hundreds, thousands, millions of times, perhaps, during the execution of your program. Efficiency matters, including both raw speed but also use of resources like memory and threads.

An advantage of most numerical libraries is the tuning that goes into the code – a lot of hand-crafted C or Assembler code, in some cases. In other words, it’s fast. Increasingly, those libraries are also tuned for multicore processing. You could never justify spending the resources to do this yourself.

I had had experience with many numerical libraries, ranging from Intel’s Math Kernel Library to AMD’s Core Math Library to the IMSL Numerical Libraries to the NAG Numerical Components. They are all good, all recommended.

The tradeoff is that many numerical libraries are costly. If you need math, though, licensing one of the libraries is a bargain – and you can do the ROI calculations on a four-function pocket calculator.

Z Trek Copyright (c) Alan Zeichick

At the Google I/O 2012 conference, the Internet giant announced the availability for its Chrome browser for both Android and iOS devices – both tablets and handsets.

The next day, I was able to install the Chrome browser for iOS immediately onto an iPhone 4 (a device released in June 2010), an iPhone 3GS (released June 2009) and an iPad 2 (released March 2011).

Chrome for Android was also available immediately for the Google Nexus 7 tablet given to each attendee of Google I/O 2012. When I went to install it onto a Samsung Galaxy Tab 10.1 (released February 2011) it didn’t work. It also didn’t work on my older HTC Evo phone.

As a teenager would say, “You can run Chrome on a three-year-old iPhone but not a one-year-old Android tablet? Epic fail.”

Take a look at the requirements. In the Mac ecosystem, Chrome requires iOS 4.3 or later. That version of the operating system was released in March 2011, but could be user-installed onto older hardware.

By contrast, the Google Play store says, “This app is incompatible with all of your devices” and indicates that Android 4.0 (Ice Cream Sandwich) or above is needed. It’s the very rare machine that can be upgraded from Android 3.x to Android 4.x. And thus, you have the incongruity that a three-year-old Apple device can run Google’s feature-packed browser, but a one-year-old Android tablet (heralded as a showpiece by Google!) cannot.

This is going to hurt Google in the long run, if they continue to leave operating system upgrades in the hands of the device makers, and if they let hardware makers orphan handsets and tablets so quickly after they are released.

Microsoft, of course, is orphaning everyone who purchased a Windows Phone 7.x handset, because those phones won’t be upgradable to Windows Phone 8.x. However, I feel confident that this is a one-time break from the past. Also, Microsoft, like Apple – but unlike Google with Android – is keeping in control of the upgrade path.

It’s bad enough that Android devices offer different user experiences depending on which hardware maker you prefer. The look and feel of an HTC is light years from that of a Motorola or Samsung phone.

When even Google’s own apps won’t work on older machines, most of us lose. Who is the winner? The lack of backwards-compatibility and customized user experiences suits the needs of the hardware makers – not consumers, developers, or even enterprise customers. I’m sure they like this situation just fine.

Z Trek Copyright (c) Alan Zeichick

Harmless kerfuffle? Abuse of corporate power? Enablement of Big Brother? No matter what you call it, Cisco’s recent firmware updates to its Linksys home routers is troubling.

According to a story published on ExtremeTech by Joel Hruska, “Cisco’s cloud vision: Mandatory, monetized, and killed at their discretion,” Cisco pushed out a firmware update to some models of its LinkSys routers for homes and small businesses. One effect of the firmware update is to move administration of the routers from a local application to a service on Cisco’s Connect Cloud services.

This means that router owners must now sign up for Connect Cloud in order to manage their routers, but the Cisco terms of service for the cloud service give lots of power to Cisco.

Hrusksa’s story says that Cisco has changed the terms of service after a firestorm of customer complaints. As of July 5, they contain lots of clauses about the type of traffic that you can use on your home network. It also says,

You agree that Cisco may suspend or terminate your access to the Service without notice if (a) Cisco suspects or determines that you have violated this Agreement, (b) Cisco determines that your actions cause Cisco to be in violation of any agreement or policy needed to run the Service or (c) Cisco is required to do so by any court or government authority in any country.  You agree that Cisco will not be liable to you or to any third party for any suspension or termination of your access to the Service as a result of any threatened or actual violation of this Agreement.


Cisco may, upon such termination, deactivate or delete your account and any related data, information, and files, and bar any further access to such data, information, and files through use of the Service.  Such action may include, among other things, accessing your data and/or discontinuing your use of the Service and any and all rights granted to you in connection with the Service without refund or compensation. 

Note that if Cisco kicks you off Connect Cloud, you will not be able to administer your LinkSys router. While you might lose control of your router, Cisco doesn’t care about that issue. How about this section of the Cisco Connect Cloud Supplement to the Cisco Privacy Statement:

Cisco Connect Cloud software is updated from time to time to provide additional features, address technical issues, and generally make your user experience better. We may add to or upgrade the Service to provide you with new features on an ongoing basis. We may also make available new services in the future. New services provided by third parties or service providers will be governed by the privacy policies of the respective third party or service provider. The Service automatically checks for updates to the firmware/software to help keep your network running at a peak performance and provides alerts as to the latest firmware/software. The auto-update feature offers the ability to download the next available version in the background. Cisco Connect Cloud offers the auto-update feature by default, but you can change your auto-update options by changing your settings within Cisco Connect Cloud. By leaving the auto-update feature as a default, however, you will avoid disruption to your home network and overall Internet connectivity. In some cases, in order to provide an optimal experience on your home network, some updates may still be automatically applied, regardless of the auto-update setting.

In other words: You purchased the router, but Cisco may decide to push new software or change its functioning at any time – including installing third-party software without your knowledge or permission, or without giving you’re the opportunity to review those third parties’ privacy policies. And of course, Cisco itself can change its privacy policy at any time.

Remember, we are talking about a network router here – something that sees every packet on a home or small business network. And Cisco is accused of helping the Chinese government build the “Great Firewall of China” to help it spy on its dissidents. What else might it do?

While automatic firmware updates are certainly convenient, the fact that you can’t turn them off is worrying. Personally, I wouldn’t buy a Cisco router. But who else can push firmware updates to your technology without your knowledge or permission? This, sadly, is the future.

Z Trek Copyright (c) Alan Zeichick

The past few weeks has seen a lot of excitement in the mobile space. This past week we had Google I/O, where we got a first look at Android 4.1 “Jelly Bean,” which offers solid improvements. The previous week Microsoft unveiled Windows Phone 8 – a near-total relaunch that will excite future customers and ISVs, while disappointing existing Windows Phone 7.5 customers. This is comes on the heels of Apple’s World Wide Developer Conference, which highlighted iOS 6’s new social media integration, home-grown mapping engine, and faster browser engine.

All of these platform upgrades are due to ship in 2012.

We also heard from Research in Motion about a delay in its already-pushed-back BlackBerry 10 smartphone operating system. It’s now scheduled for the first quarter of 2013. The company also lost a ton of money in the past quarter. It’s reasonable to predict that BlackBerry is toast, or soon will be.

Let’s dig a bit deeper into the three, uh, more viable smartphone platforms – and what they mean for us.

Apple’s iOS 6 is merely an incremental upgrade. Apple has moved from Google’s mapping system to its own Maps engine, which is fully accessible via APIs. You can also integrate Facebook into apps, tap into the Reminders system, go closer to the hardware with the camera, and leverage an improved WebKit rendering engine.

The good news is that from the developer perspective, not much has changed; you get some new capabilities, but if you don’t need them, you don’t need to do anything.

Existing Apple customers won’t be standing in line at midnight to download iOS 6 – but they will appreciate its upgrades. That’s because Apple continues to win the award for best support of older hardware. All current iOS devices, including iPhone, iPad and iPod touch, should be able to run everything in iOS 6. Most features will run on the 2011’s iPad 2 and even 2010’s iPhone 4.

Microsoft’s Windows Phone 8, code-named Apollo, is a huge, huge, huge upgrade. Everything changes. It’s a real reboot, as the platform moves from the Windows CE kernel to the Windows kernel (either x86 or the new Windows RT kernel for ARM processors). For the first time, Windows Phone can run on multi-core hardware and use screens larger than 800×480. Because the WP8 kernel is the Windows 8 kernel, WP8 phones should work with any Windows 8 device driver. That should let you do some pretty interesting hardware integrations – and gives WP8 a huge advantage of iOS and Android.

Near Field Communications (NFC) is a big part of WP8, as it is with Android. iOS still doesn’t get NFC – but I expect Apple to catch up fast, perhaps with the next-generation iPhone and an iOS 6.x update.

Most importantly for apps developers, you can also write apps in C/C++ or even use the .NET framework with C# or Visual Basic. That truly enables code migration to the mobile platform.

The bad news is that WP8 will require all new hardware. The only upgrade for existing WP7.x users (including those who just bought the much-hyped Nokia Lumia 900 phone)  is a cosmetic upgrade called Windows Phone 7.8 that improves the Start Page with new colors and three sizes of Live Tiles. Beyond this small enhancement, every existing Windows Phone customer is out of luck until their carrier’s contract lets them buy a new phone. Ouch.

Google’s Android 4.1 Jelly Bean is another incremental upgrade, similar in scope to what Apple is doing with iOS 6. The biggest change is called Project Butter, which improves the dreadful synchronization of the touchscreen with screen composition/refresh. This, along with improved triple buffering should go a long way toward eliminating common complaints that the Android UX is sluggish, unresponsive or even buggy, when it’s simply out of sync.

Another area of improvement is notifications – where you can provide more info to the end user, and even let them respond without switching to your app. You can more easily communicate with devices connected via USB or Bluetooth, access the NFC stack, and work with a better HTML5 renderer. A popular feature should be an upgrade to Ice Cream Sandwich’s message queuing service. Called Google Cloud Messaging, the system can now deliver up to 4K of data – and can leverage multicast.

We don’t know which existing Honeycomb (Android 3.x) and Ice Cream Sandwich (Android 4.x.x) devices will run Jelly Bean. This is determined largely by each hardware maker on a model-by-model basis. If past experience is any guide, some existing Android handsets or tablets will be upgradeable to Android 4.1, but most will be orphaned.

That’s a shame — but it’s better than those poor Windows Phone 7.x owners can expect.

Z Trek Copyright (c) Alan Zeichick

This is one of a series of articles I wrote for the monthly Bulletin of Peninsula Temple Sholom in Burlingame, Calif.

It all began in the PTS parking lot one sunny Sunday. I was waiting to pick up my son Michael from Religious School and a nice man approached and asked, “are you doing anything Monday night?” I replied that the evening was clear. And he said, “Good! Please come to a Brotherhood meeting.”

That nice man, Fred Sturm, started me on my path towards community service at PTS. I can never thank Fred enough for his menschlichkeit and friendship.

After a few years in Brotherhood, I was approached in 2006 by new Board President Karen Wisialowski, who invited me to join the Publicity Committee. There, I worked with new friends like Gail Mintz, Jeff Cohen, Alana Feldman, and Jerry Ezrin on projects such as creating a publicity handbook and other resources for Temple events. Later that year, Jeff and I became co-chairs, and I took over as Temple webmaster.

Then, in early 2007 came an unexpected phone call from Shari Carruthers who was President of Sholom Women at the time. Shari was on the nominating committee for the Board of Trustees — would I join the board? Once the shock wore off, the answer was “Yes” — and I became part of the Class of 2007, along with Stephen Abbott, Ed Fineman, and Stacie Herschman.

Joining the board brought a steep learning curve and unfamiliar faces, but it felt great to give back to the community. Under the presidencies of Karen Wisialowski, Keith Tandowsky, and Brian Hafter, the past five years have been rich and fulfilling. Having the opportunity to work closely with two Executive Directors, James Carlson and Amy Mallor, with Rabbi Dan Feder and his clergy team, the other members of the board, and many past presidents and former board members, has led to personal enrichment and growth far beyond my expectations. And, of course, lots of new friendships.

In the February 2012 board meeting, I was elected as the next President of the Board of Trustees, beginning July 1. I’m honored and excited to begin my term.

Carole and I moved to the Bay Area in August 1990 and we began “shul shopping” right away. At first we looked at Conservative synagogues, since our background is Conservative/Orthodox, but didn’t find a place we could call home. We expanded our horizons and decided to investigate Reform synagogues. Visiting PTS for the first time in 1992, we fell in love with Rabbi Gerald Raiskin z”l and Helen Raiskin z”l. We swiftly made friends; for two newcomers from far away — my being from New England, Carole from Scotland — and without local family, PTS truly became our second home.

There was no question that we would send our son Michael to the PTS Preschool, at that time led by the beloved Bobbie Goldstein. We formally became dues-paying members of PTS in 1999 when it was time to send him to Religious School. Michael went through the entire youth education program, becoming a Bar Mitzvah and attending Confirmation Class, as well as an enthusiastic member of Cantor Barry Reich’s Hava Nashira Band. A 2012 graduate of Mills High School, Michael ships off later this year to become a United States Marine. We couldn’t be more proud.

Thank you for the opportunity to serve our kehillah kedosha, our sacred community. In the weeks and months ahead, you’ll read about the many projects that we will be undertaking together. It’s going to be wonderful.

See you in the parking lot!