Best JavaScript code snippet using ng-mocks
1.py
Source:1.py
1clear2echo3echo4echo5echo -e "\e[0m\e[1;35m6 ââââââââââââââââââââââââââ7 ââââââââââââââââââââââââââ"8echo9echo -e '\e[0m\e[1;31m10 [\e[0m\e[1;36mââââ................\e[0m\e[1;31m]\e[0m\e[1;36m 20 %'11echo12echo -e '\e[0m\e[1;33m13 Created by BlackMafia'14sleep 1.215clear16echo17echo18echo19echo -e '\e[0m\e[1;35m20 ââââââââââââââââââââââââââ21 ââââââââââââââââââââââââââ'22echo23echo -e '\e[0m\e[1;31m24 [\e[0m\e[1;36mââââââââ............\e[0m\e[1;31m]\e[0m\e[1;36m 40 %'25echo26echo -e '\e[0m\e[1;33m27 Created by BlackMafia'28sleep 1.229clear30echo31echo32echo33echo -e '\e[0m\e[1;35m34 ââââââââââââââââââââââââââ35 ââââââââââââââââââââââââââ'36echo37echo -e '\e[0m\e[1;31m38 [\e[0m\e[1;36mââââââââââââ........\e[0m\e[1;31m]\e[0m\e[1;36m 60 %'39echo40echo -e '\e[0m\e[1;33m41 Created by BlackMafia'42sleep 1.243clear44echo45echo46echo47echo -e '\e[0m\e[1;35m48 ââââââââââââââââââââââââââ49 ââââââââââââââââââââââââââ'50echo51echo -e '\e[0m\e[1;31m52 [\e[0m\e[1;36mââââââââââââââââ....\e[0m\e[1;31m]\e[0m\e[1;36m 80 %'53echo54echo -e '\e[0m\e[1;33m55 Created by BlackMafia'56sleep 1.257clear58echo59echo60echo61echo -e '\e[0m\e[1;35m62 ââââââââââââââââââââââââââ63 ââââââââââââââââââââââââââ'64echo65echo -e '\e[0m\e[1;31m66 [\e[0m\e[1;36mââââââââââââââââââ..\e[0m\e[1;31m]\e[0m\e[1;36m 90 %'67echo68echo -e '\e[0m\e[1;33m69 Created by BlackMafia'70sleep 1.271clear72echo -e "\e[5m\e[1;32mÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎ;ÏβÎÎÎÎÎÎμ;73lccclooodooolooooododxxddddddddollllllooooool;. ......................'okOOOOO00000000000OOOOOOO74llllllloooooooooloodxxxddddddooolllllodddooolc:,.. .....................'lkOOOOO000000OOOOOOOOOOOO75clllllodddoooooolloododdddxdoooolllllodddoolllllc:;'... ....................'lkOOOOO00000OOOOOOOOOOOOO76cllloooddooooooooooooooddooolloddolllodddoolcclloooolc:,'.. ....................'lkOOOOO0000000OOOOOOOOOOO77llllooloodooooddooolooodxdddllodolllloooooolcloooodoooooll:;'.. .....................lkOOOO0000000000OOOOOOOOO78cclllllllooooooooolodoodddddollooollllolloolloooooooooooooooolc:::,.. ......................ckOOOO00000000000OOOOOOOO79ccclllllllooollolllooddddddoolloddoc:ccclddlloooddddddoooooodddoooolc:;,'.. ......................ckOOOO00000000000000OO00080llllllcclllllllllooooddoodoolllooooccoollolclddodoooddddooooooodddolllllllc,. .....................'ckOOOO000000000000000000081olccllcloollllllooloooooooooolloooooooolllllloooooddddddooooooooddollllloooo:'. ..... ....... .....................'lkOOO0000000000000000000082olcllllloooooooooollllolooodooloooddooolclllooodddddoodxddddddddxdolllloodooooc,.................. .....................,okOOO0000000000000000000083llllllooooooolllolllllloooooolllodddoddoccccoooooooodddxdoooddxxxooooollddolooool;.................. .....................;dOOOO0000000000000000000084ollcllllloooolllolllllllooollccloodddddolcclllooddooddolloooodxxdooooollddolodooooc,................. .....................:xOOOO0000000000000000000085oollllllllllllloooollllloolllllllooddddoccooloddddddoooccllloxxddooddooddollddoooool;................. ......................cxOOOO0000000000000000000086ooolcclccccclooooooollllcloloooooooddoolllooooddddddooollooooxdlloodoodxolllooddoooolc,................ ......................:xOOO00000000000000000000087llllccllcccclloooodoolllclloooooddddddlclloooddxdddddooodddxxdooodddoddoc:loodxxddxdooc;'............... ......................'cxO000000000000000000000088ccclllllllclllooooooolllllloooooodddoolllllloodddddddoooxxxddoooooddool::loodxxddxxdooll:'............... ................. ...ck0000000000000000000000089'''';clllllccccllllooolllllooooodddoolllllloddoodddoodddxxdoodooodddocccllodxxxdddddooollc,'.............. ...........'',;;::cloxO00000000000000000000000090......,;:clcc::::::cclollllloooooooooooloooooooooooddddddoooooodxxollllloooddxxdddddoooloooc;'''........... ......'',;;:ccllodxxxkkOO0000000000000000000000000000000091..........',,;;;;;;;::lllllllooooooooooodddddddddoddoooodlcccldxxollodoooddddxxdooddddoooodol:;;;;,,,,,,'''...... ...',,;:ccloddxkkOOOO000000000000000000000000000K0000000000000000000092...............''''''',;:ccllloooolllodooodddxxdooooooooollcloolllooooddddxdllloodxddoooooooooooollllllllllllccc:,,,,,,,'. ....',,;:cclodxxkOO00000K0000000000000000000000000000000000000000000000000000000000093......................',,,:ccllcc:::clooooddooodddooodoooolooooodooooddddoolcclodddddolcloooollooooooooooodddoooodddddddl. .....',;;:clloddxkOO00000000000000000KKKK00000KK00000KK0KKKK000000000000000000000000000000000000000094...................'';:cc:cc::::;;;:ccclloooodoodooooollooooooodoodooddoooooooddxxxxdllcllcccclooooooooooddddddoodxkkxkxo, ....',;::cloodxkkOO000KKKKKKK000000KKKKKKKKKKKK0KKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000000000000000000000000000095.............',;;;:ccllcccccccc:::::cccllooooolllollloodddoddoooddddddooloddddxxxxxdlccccccccccclooooooodddddddoodxkkkkkx:. ....',;;:cloddxkOO0000KKKKKKK000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00KKK0000000000000000000000000000000096;,'......'',;:clllllccccccc:ccccccccclllccllllloodddoodddoooooddxxdoooooodxxxxxdddlc:,;::cccc:,',;:ccloodddddddddddxkkkkxl. ....',;::cclodxkOO00KKKKK000K0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000000000000000000000000097ol::;::::cccccclllllccccccccccccccccllllllloododddddddxxxxxxdddxdolclooddxxxddolcc::;;;::cccc;'..'''',:lloddddddddodxxkkkd:. ....',;;::cclodxkkO000KKKK000000KKKKKKKKkox0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000K0000000000000000KK00K000000098lllccccccccllllllllllclllccc:::::::cclllllloodddxddddxddxxxddddolccclddddddlccc::::::;:::cccc:;'.....'',;ldddddodddddxxkkko, .....,;:cclodxkkOO000000000000000000KK0000kkk00KKK000d;;ok000OOO0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000KKKKKK00000000099ooollllllllllooooolllllcccc:c:::::cccccllclloddddddddooloolllllloooddddool:::::::::::::ccclllcc:,'.''''';lddddooodddddxxkkxdc:coodxkkOO0000000000000000000000000000KKKK0000xc:lllooloxo;..';cclllllkKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0KKKKKKKKK00000000K100oooooooooooooooooolllccccccccccclllllloolllllollllllllcccclloodxxxolllcc:c:::::::::::::cccccllllc;'''''';ldddddddddddddxxxxxxxOO00000000000000000000000000000Okxxxddooolc:;,........... ..'..;k0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0KKKK101ooooooooooolloooolllllllllllllllooooooololcc:clclllllllloodxxddoollccccc::::;;;;::::cccllccclllllc:,..',:loddxxddddddddddxxkxxkOO000000OOkxdok0KK00OOkxdlc::;,'....... .;dk0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK102ooooooooooolllllllloooolllloooolooooollllllccllllllooddddxolccccllllc::;;;;;;,;;:::ccclllllllllllooc'.,loooddxxxxxxxxxddddxkxxxxkOOOxoc;,'...;dxoc;,'...... ..,lO0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK103oodooddoooolllllloooodooooooooollllloolllllllloooddddodol:;;:cllllc::;;;;;;;;;::::cclllllllclllloooo:;looodddxxxxxxxxkxxxxxxxdoollc;'.............. .. ..,lk0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK104oooooooooooooooooooooooooooooolclllllllllooooooddddol:;;:::cllc:;;;;;;;;;;:;::cccccccccccccclllooooc:codddodddxkxxxkkkkxkxolllc:;;,'................. .,lk0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK105looooooooooooooddooooooooooolcclllooooooddddddool:;;;:clollc:;;;;;;;:;;::::::cccclllcclllllllooooolccoxxxxddddxxxkkkOOkOkocc::;;,,''........................ .,lOKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK106lcloooddddddddooooooodddoooooooodddxxxxxddoolc:;;:ccooool;,,,;;;;;;;:;;:::ccccllllllllcccc:cccllloooodxkxxxdddddxOOOOO0Ol,''''''''''............''................ .:OKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK107llloodddxxxddddoooddddddddddddddxxxxddolc:::;;:cloddooc:;;;;;;::::cccccccllllllllllooolllllcc:cllooloxxxxddddddxOOOOOO0d;',''''''''..'''.....'''''''...'''''''.... .c0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK108ooooddddddddddooodddxxxxxxdddxxdoollc:::;;:::loddddoc:ccccllloooooooolloodoooooooooddddoooooooolloloxkkxxoloooxOOO0OO0k:,,,,,,''''...'''.....'''''''''''''''''.... .lOKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK109ddddddddddooddooddddxxxxxxdoollc:::::;:::cooddddollcccc:::ccloddddodoooooodddddddddxdodddoooooooolodkxxxocclokO000000Ol;;;;,,,,,''....''....',,,,,,,,,,,,,,,'''... .oKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK110dddddddddxxdxxddxddxxdddolcc:::::::::cllodddxdoolllccccc:::::loddxxddxxxdodxxxxxdxxxxdoooooooolooodxxxxdcclox00000000d;;:;;;;,,,''';'......',,,,,,,,,,,,,,,,,''.... .:0XKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK111ddddxxxxxxxxxxxdxddoolccc::c::::::cloodddxdddooooollccc:::::;;cdxxxxxkkxddddxddoooolcc:;;:lollooooxxxxdlcllxO0000000k:,;::;;;,,,,,:;,......',;;;;,,,,,,,,,,,,,'...... .,xKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK112xxdxxkkxxxxxxddollccc:::cc::ccccclodxxxxddooolllolllcc::::::;;:lxkxxxxxxxdllollc::,'....,lolloolodxxxdoloodO000K0000o,;;;:::;,,,,,.........',;;;;;;;,,;;;;;,,,,..'.... .;dO0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK113xxxdxxxxxxdolcc:;;:::::::::cccllodddxddddooollloooolllllllccccccoxxddooolc:;;,'.... .;lolloooloddxdoloddk000KK00Kk:,;;;;;;;,,,'..........';;;;;;;;;;;;;;;;;;;'.'''... .';ok00kk0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK114xxdooddooollcc:::::::cc:cccllooddddddddddoooodoooooooooooloolc:cldoll:;''..... .:ooollooollddddolooddO000K00KKd,,,;;;;;;,''','...... .';::::;;;;;;;;;;;;;;,''''.... ..;cldoox0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK115dddooolllllcccccccccccclllodddxxxxxdddddooodooodddddddddoooodocclcc;'.. .':oddolcloolloddddoooddx000KK00K0l',,;;;;;,,'''';:;'.....,:::::::;;;;;;;;;;;;;,,'''... ..':dkO0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK116oooolllllcccccccllllllloodddxxxxxxxdddddddddddddddddddoooooddocc:;'... .,coodddlcloooclddddooodddk00KKKKKKk;',,;;;;;,,''''','......;:::::::::;;;;;;;;;;;;,,,'... ...:kO00KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK117oollllccccccclllllloooodddxxxxxxxddddddxxxddxddddddddoooooolllc:'.... ...'cdoooddocloodlldddddoooddxO00KKKKKKo'.',,,,,,,,,''.........,;:::::::::::::::;;;;;;,,,'... .lkxOKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK118lllcccccclllllooooooooddddxxdxxxxxxddddxddooddxxddddddooollll:,..... ....cddooooddlloodoooddddooodddk0KKKKKKK0c..'',,,,,,'''''......',;::::::::::::::::;;;;;;,,''... .'cx0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK119lllllllllloooooooooooddxxddxxxxxxxdddxxxxxddxxxxxxdooooolllc;...... .....;odoloooodolodddoodddddoodddxO00KKKKKKO;.'''',,,''''''....''',;;::::::::::::::::;;;;;;,,'.... .cOKKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK120cclllllloooooodddddddxxxxxxxxxxxddxxxxxxxxxdxxxxxdoolooooc,'..............cxxolooooddoodxxdoodxxxdoodoox00KKKKKKKk;'''''''''''''''',,,,,;;::::ccc:::::::::::;;;;;,,'.... :0KKKKKKKXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK121clllloooooooodddddxxxxxxxxxxxxdddxddxxdddxxxxxxxxdoccodol,...............lkkdolllooddloxxxxoodxxxdoddddk0KKKKKKKKO:,,,,,,,,,,,,,,;;;;;;;;;::::cccc::::::::::;;;;;;,'... :0XKKKKKKXXXXXXXXXXKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK122cllooodddddoddxxxxxxxxxxxxxxxxxxdddxxdddxxxxkkxdolc:codl,...............:kOxoooooooddclxxxxooxxxxdoodddk0KKKKKKKK0l:::::::;;;;;;;;;;;;;;;;;::ccccc:::::::::::;;;;,,'... .c0KKXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK123clloodddddddddddddddddxxxxxxxxxdddxxxxxxxxxddxdlc::lddl,...............'dOOxdooooooddcoxxxxodxxxxdooddxOKKKXXKKKKKdc:c:::::;;;,,,,,,,,,,,,;;::cccc::::::::::;;;;;;,'... .;OXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK124lllooddddddddodooooooooooooodddollooddxxxxddooollloxdl,................;k0Okdooooodddodxxxxddxxxxxooddxk0KKXXXKKKKOc;::;;;;;,,,''''''''''',,,;:ccc::::::::;;;;;;;;,'... 'xXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK125dddddddddddollllllllllcccc::cccllcccllllllooolloodddl,.................,x0OkdoooooddddddxxxdodxxxxddddxxOKKKXXKKKKKd;,,,,,,,,,,'''''....''''',;:::::::;;;;;;;;;;;,,'... 'xXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK126xxxxxxxxxxddoddddddxxdddooollodddxxxxxdoolccccclllc;...................'lO0Oxdooodddxdooxxxdodxxxxxdddxxk0KKKXKKKKK0l'''',,,,,'''''...''......,::::::;;;;;;;;;;;;,,'... ;OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK127kkkxxxxxkkkxxxxkkkkkkkxxxxxxxxkkkkkkkkkkkxxdollc:;.. ...................,o00OxddddddxxdodxxxddxxkxxxddxxkO0KKKXKKKKKO:.''',,,,,,''''',;,......';:::::;;;;;;;;;;;,,,'... .lKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK128OkkxxxxxkkkkkkkkkOOOOOkkkkkOkkkkkkkkkkOkkkxxdoolc:;,'....................,oO0Oxddddddxxddddxxdodkkkkxxxxxxk0KKKXKKKKKk:''',,,,,,,'''',.........,:::::;;;;;;;;;;,,,,'.... 'xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXXXXXKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK129OkkkkkxxkkkkkkkkkkOOOkkkkkOOkkkkkkkkkkOkkkxxxdollllllc:;,'................'cx0Oxddddddxxddddxxoloxkkkxxxxxxk0KKKXKKKKKOc'',,,,,,,''''..........';;::;;;;;;;;;;,,,,''... .c0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK130kkkkkkkkkkkkkkkkkkkkkkkkxkkkkkkkkkkxxxxxxxdddollllccclllccc:;,'.............,lxOkxdddddddddoodxoclxkkkxddxxxk0KKKKKKKKKOl,,,,,,,,,,'''''........';;;;;;;;;;;,,,,,''.... ....lKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK131xxxxxxxxxxxxxxxxxkkkkkkxxxxxxkkxxdooooodxxdddooooollcllollllllcc:;'...........':dkkkxdddddddodddocokkkkkxddxxk0KKKXKKKKK0o;,,,,,,,,,,,;:lc,......',;;;;;;,,,,,,,''.... .;,'oKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKK000000KKKKXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKK132lllloooddxddddddddddddxdddddddddddddxxxxxkxxxddddoollcllllllllllool:,............,cdxkkxddddddddddodxkkkkxdddxkOKKKKKKKKK0d;,,;;;;,,,,,,;;........',;;;,,,,,,,'..... .,lld0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKOxxkOO00000KKXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKK133lc:::coxxxxxxxxxxxddddxdxxxxxddxxxxxxxxxkxxdxxdddoooollllcccllooodddlc;;,'..........,:ldxkxxdddddddddxxxxxxdddxxO0KKKKKKKKKkc;;;;;;,,,,,'...''....',,,,,,,,,''... 'd0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKOkkOOkkO00KKKKKXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKK134ol::::lxxxxxxxxxxxddddxxxxxxxxxxxxxxxxxxxxxddxxdddolllllllccclolodddddoolc;'............,:odxxxxxddddodxkxxxxddxxkO0KKKKKKKK0d:;;;;;;,,,''.''''...',,,,,,,,'.... ..,xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKOOKK0OkO0KKKKKXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKK135xxddxxkkkkkkkkkxdxxddxxxxxxxxxxxxxxxxxxxxxxdxxdddoccclooloollllloooddddollc:;,,'''..''',,;;:clodxxxdddodxkkkkxxxxxxO00KKKKKKKKkl:;;;;;,,,''''''....',,,,,''... ..';:oOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKK00KKKKKKKKKKKXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKK136kxxkkkkkkkkkkkkxooddxxxdxxxxdoodxxxxxxxxxxxxddddddoooloddddoollllooooooolllcccc::::;;;;;::::;;;;:clodddddxkkkkxxxxxxkO00KKKKKKK0xl;;;;,,,,,''''............ .:odkOO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK00O0KKKKKKKKXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKK137xxdxkkkkkkkkkkkxoodddddddxxdddodxxxxxkkkkkkxxxxxxxxdoooooooooollllloooooooollllcccccc:;;;;;;;;;:cloodddddddxkkkkxxxxxkkO00K0000KK0xc;;;;;;;,'.... . ..':kKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKK0OO0KKKKKXXXXXXXXXXXXXXXXXXXKKKXKKKKKKKKKKKK138xxxkkkkkkOkkkkkxdodddxxxxxxxxxxxxxkkxkkkkkkxxxxxkkxdddoooooooolllloooooolllllllcccc::::;;::cloddddddddoodxxxxkkkkkxxxkkkOO0000K0OOkdlc:::;,'...... .,:ldkOKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXKKKXXKKKKKKKKKKK139kkkkkkkkkkkkkkkxdllddxxxxxkxxxxxxxxkkkkkxxkkxxxkkxxxxdddddddddooooooooollcccccccccccccclloodxxxdoooolccoxkkkkkkkkkkkkkkkOO000000Okkxdollcc:;,'.......,;;;,..,::'. ..',;cok0KKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXKKKXXKKKKKKKKKKK140kkkkkkkkkkkkkkkkxlcooddddxxxxxxxxxxkkkkkxxxxxxkxxxxxxxxxdxxxdddoollooooooooolllloooodddxxddddddddooolllxOOOOOOkkkkkkOOOO0000000000000000000OkxdollloxO0OOxoxO00Oo' ...',;:coddooxk00KXKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXKKKKXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKK141kkkkkkkkkkkkxxkkxoccloddddddxxxxxxxxxxxxxddxxxkkkxxxkxxxxxkxxxdddoloddddddxxdxddxkkkkkxxxxxxxxxxkxxddddxOOOOOOOOOOOO000000000000000000000KKKK00KKKKKKKKKKKKKKKKK0kdc:,'',:okO0KKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKK142kkkkkkkkkkkkxxxxxoccodxxxxdxxxxxxxxxxxxxkkxxxkkkkkkxkkxxxxxxxxdoolllodxxxkkkkkkkkxkkxxxxddxxxxxxxxxxxxxkOOOOOOOOO000000000000000000000K0KKKKKKKKKKKKKKKKKKKKKKKKKK00OOOO00KKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKK143kkkkkkkkkkkkkkkkkxoodxxxxxdxxkkkxxxxxkkkkkkxxkkkkxxxxxxxdddddddolccccoxOOOOOkkxxdddddoooolodddxxdxdddxxkOOOOOOOOO000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKK144kkkkkkkkkkkkkkkkkkddxxxxxdxxxkkxxxxxxkkkkkkkkkkkxxxxxxxddxxxxxxxdollccdOOOkxddolllllllllooooodddddxddxkOOOOOOOOO0000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKK145xkkkkkkkxkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkxxkxxxkkkxxxxxxxkxxxdooxxxdolllllccclllllllooooddddxxdxkOOOOOOOOOO000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKXKKKKK146xxxkkxkxxxxxkkkkkkxxxxxxxxxxxxxxxxxxxxxxkkkkkkxkkkkkkkkkkxxxkkkkkkkxxddxdddddddooooooooooooodddooddxxkOOOOOOOOOOOO0000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKXXXKXXXXXX147ooooooooooodxxxxxxxxxddxxxxxxxxxxxxxkkxkkkkkkkkxxkkkkkkkkkxxkkkkkkkkxxdxxxxxxxxxxxxxxxxxddddxxddddxxkOOOOOOOOOOOOO000000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXX148lcc:;;,,,,;;::cccllllloooooooddxxxxxxkkkkkkkkkkxxxkkkkkkkkkkkkkkkkkkxxxxxkkxxxxxdooddxdxxxxxxxdddxxkOOOOOOOOOOOOOOOO00000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKXXXXXXXXXXKKX149;;;;;;;::cc::::::;;;;;;;:::ccclodxxkkkkkkkkkkkkxxxxkkkkkkkkkkkkkkkkkxxxdxxxxxddddooddxxxxxxxxxddxxxkOOOOOOOOOOOOOOOO000000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKXXXXXXXXXXXX150:ccllloooooooollcc:;;;;::cccccclloodxkkkxkkkkkkkkxxkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxddxdddddxxxxxxxxkkOOOOOOOOOOOOOOOOOOO0000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX151lloooodddddddddoolccccccclllllloollloddddxxxxxkkkxkkkkkkkkkkxxxxkxxxxxkkxkkxxxxxxxddddddddxxdxxxxkkkOOOOOOOOOOOOOOOOOOOOO00000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX152llooodddddodddddoooollllllllloooooolllooooododddddddddxxxxxxxdxkkkkkkkkkxkkkkkkkxxxddxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOO00000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKK0000000OOOOOOOkkkkkkxxxxxxddddodx0KXXXXXXXXXXXXXXXXXXX153oooodddooddddddddddddoolllollloddddooooooooooooooodooooddoolloodxxxkkkkxddxxxxxxxxxxxxxxkxxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOO0000000000000000000000000KKKKKKKKKKKKKKKKK00000000000000000000000000000OOOOOOOOOOOkkkkkkkkkxxxxxdddddoooooolllllllllc::::::::::;;;;;;;;,,,,,,,,,'''''''....'cxKXXXXXXXXXXXXXXXXXXX154dxxxxdddddxxdxxxxxxxxddddooooooddddddddooooooooddddddddddddodddxxxkkkkkkkkkkkkkxxxxxkkkkkxxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxxddooooooooolllllc::cccccccccc:::::::::::::::;;;;;;;;;,,,,,,,,,,,''''''''''''.........''''''.....'''''''''''''''''''''''''''''.....':xKKXXXXXXXXXXXXXXXXXX155xxkkkxxxxxxxxxxxxxxxxxxxxddddddddddddddddddoooodddddddddodddxxxkkkkkkkkkkOkkkkkkxddxxxkkxxdxdddddddddoooolc:::::cloooodxxxxxxkkkxxxxxxxxxxxxxoc:::,''................''',,,,,,,''''''''''''''''''''''''''''''''''''''''''................'''''......''''''''''''''''''''''''''''.....'ckKXXXXXXXXXXXXXXXXXXX156xxxxxxxxxxxxxxxxxxxxxxxxxxxxxdddddddodddddddddoddddddooooooddxxxxxxxxkkkkkOOOkkkxxxxxkkdl:;;;,,''''''''''''''',,;:::ccloooddddxxxxdooodddddddl;'''...................''''','''''''''''''''''''''''''''''''''''''''''.....................'''''......''''''''''''''''''''''''''''.....':d0XXXXXXXXXXXXXXXXXXX157dddddxxxxxxxxxxxxxxxxxxxxxxxxxxddddddddxxxxxxdddxxxdddddddxxxxxxxxxxxxkkkkkkkkkxxxddolc;,,,,,'''''',,,,,,,,,,;:ccllooooooodddddxxdollooooooool,......................''''''''''''''''''''''''''''''''''''''''''''.........................''''......''''''''''''''''''''''''''''.....',lx0XXXXXXXXXXXXXXXXXX158ddddxxxxxxxxxkkxxxxxxxxxxxxxxxxddddxxxxxxxxxxxxxxxxxxxxxxxxxkxxxkkkxxkkkxxxdooollc:;,,,,,,,,,,,,,,,,,,,,,,;;:cclooooooooooodddddoccllooooooooc,.......................''''''''''''''''''''''''''''''''''''''''''''........................''''.......''''''''''''''''''''''''''''.....,lOKXXXXXXXXXXXXXXXXXX159ddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdddoolccc:;;;,,,,,,,,,,,;,,;;;;;;;;;;;;::cclloooooooooooooolc:;;:cllllollllc'.................''''''''''''''''''''''''''''''''''''''''''''''''..'.......................'''''......''''''''''''''''''''''''''''.....;d0XXXXXXXXXXXXXXXXXXX160xxxxxxxxxxxxdddxxxxkxkxxxxxkkkxxxxxxxxxxxxxxdxxxxxxxxxxxddddoollcc:::;;;,,;,,,,,,;;;;;;;;;;;;;;;;::::::::ccclllllllooooooolc,''',;;::clllllll:..................'''''''''''''''''''''''''''''''''''''''''''''''''.''......................'''''......''''''''''''''''''''''''''''....';d0XXXXXXXXXXXXXXXXXXX161xxxxxxxxxxxxxxxxxxxxkkxxxxkkkkkkkxxxxxxxxxxddxxxddoolcc::;;::;;;;;;;;;,;;;;;;,;;;;;;;;;;;;;;;;;;;::::::clllllllllllllllllc;'..',;;;;;:ccllllc;..................''''''''''''''''''''''''''''''''''''''''''''''''''''......................'''''......'''''''''''''''''''''''''''.....';d0XXXXXXXXXXXXXXXXXXX162xxxxxxxxxxxxxxxxkkkkkkkxxxxxxxxxxxxxxxxdddddddoc;,,,,,,,,,,,,,,,,,,,,,',,,,;;,,,,;;;;,,,;;;;;;;;;:::ccllolooolc:::cccccc:,...;::::::::::ccllc:,'''..............'''''''''''''''''''''''''''''''''''''''''''''''''''.......................'''''......''''''''''''''''''''''''''''....';d0XXXXXXXXXXXXXXXXXXX163kxxxxxkkkkkxxkkkkkkkkkxxxxxxdddooooddolccloooool:;,'',,,,,,''''',,,,,,,,,,;;;,,,;;;;;;;;;:;::::::::::::c::::;;,'',;::::;,..':clllllllc::ccclllllc:'.............''''''''''''''''''''''''''''''''''''''''''''''''''........................'''''.....''''''''''''''''''''''''''''.....';d0KXXXXXXXXXXXXXXXXXX164xxxxxkkkkkkkkkkkkxxxxxdollc:;;;;:clollccoddooooool:,,,,;;;,,,,,;;;;;;;;;;:::::::::;,,,,,,,,''''''''''''''''''''''',;:;;,,,;clllooooooolccclllloll:...............''''''''''''''''''''''''''''''''''''''''''''''''.........................'''''.....''''''''''''''''''''''''''''.....';d0KKXXXXXXXXXXXXXXXXX165kxxxxxkkkkkxxxddooollc:;;,,,,;:loooollloxxxdddddddolccclc:;;;;;;::::::::::ccccccc:'...............'''''''''''''...',;;;;:cllllloooodddoolllllllc:'...............''''''''''''''''''''''''''''''''''''''''''''''''''..''...................'''''.....''''''''''''''''''''''''''''.....';ok0KXXXXXXXXXXXXXXXXX166xxxddddddddddoolc:::::::::;;;coooooooldxxxxxxdddxxxxdolllc:;;;;::::::::cccccccccc:,...............''''''''''''.....,;;;:cllllllooooddddddolc:cc:,................'''''''''''''''''''''''''''''''''''''''''''''''''''''''...'..............'''''.....''''''''''''''''''''''''''''......':lx0KXXXXXXXXXXXXXXXX167ooooooooooooooollcc:::ccc::;:loooooooodxxkkxxxxxxxkxxxooll::::::::::cccccccccccccc;...............''''''''''''.....',,,;clolllooooodddddddollc::,................''''''''''''''''''''''''''''''''''''''''''''''''''''''''.................'''''.....'''''''''''''''''''''''''''''.....';ldOKXXXXXXXXXXXXXXXX168llllllloooooooooollcc:::ccc:clooooooollodxkxxxxxxkkkkkxdolc::::::ccccccccccccccccc:'..............'''''''''''''.......',;clllooooooddddddddddoc:;.................''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''..........'''''....'''''''''''''''''''''''''''''.....'';lxOKXXXXXXXXXXXXXXXX169cccccllooooooooooolllcc::ccccooooollcccclodxxxxxxkkkkkkxdolc:::cccccccccclllllllll:'.............''''''''''''''.......'',;cloooooodddddddddddoc;'.................''''''''','''''''''''''''''''''''''''''''''''''''''''''''''''''.........'''''....'''''''''''''''''''''''''''''......';lx0KXXXXXXXXXXXXXXXX170llllloooodddooooooooolllc:::cloolc:::::::clooddxxkkkkkkkxl;;;:ccccccccccllllllllllc,............'''''''''''''''.......''',:looddddddddddolc:,'....................'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''.......''''''...''''''''''''''''''''''''''''''.....';lxOKXXXXXXXXXXXXXXXX171llooooddddddddooooooooollc:;::c:;;;;;;;;;;:::codxxkkkkkkko;',:ccccccccccllllllllllc:'..........'','''........''....''',,'',:loddddddol:,'.........................''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''......'',,''...''''''''''''''''''''''''''''''....'';ldkKXXXXXXXXXXXXXXXX172oooddddddddddddddddddoooll:;;;,',,;::::::;;;;::loxkkkkkkkxc,,:::ccccccccccccccccccc:,'..........''''........'''....''','''',;codol:,.. ............................'''''''''','''''',,,,,''''''''''''''''''''''''''''''''''''''''''''.....'',,''...''''''''''''''''''''''''''''''....',;cok0XXXXXXXXXXXXXXXX173oodddxxddddddddddddddddool:;:;'',:ccclloool:;;::coxkkkkkkxo;,;:::::::::::::::::::;;;,''................................'.....'''.. ...........................''''''''',,,,'',,,,,,,''''''''''''''''''''''''''''''''''''''''''''.....'',,,'.....''''''''''''''''''''''''''''....'';cox0KXXXXXXXXXXXXXXX174oddxxxxddddddddddddddddoccccc:,,;::ccloxxxdoc;;;:ldkkkkkkdc;,,,,,,,,,,,,,,'''''''......................................... ...........................''''''''',,,,,,,,,,,,',,,,,,,,,,,,,''''''''''''''''''''''''''''''''....'',,,'.....'''''''''''''''''''''''''.......'';codOKXXXXXXXXXXXXXXX175odxxxxxxxxxxdddddddddoolllccc:,,;::ccllodddoc;;;;coxkkxdc;'''''............................................. ...........................''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''....'',,,'.....''''''''''''''''''''............'';cldOKXXXXXXXXXXXXXXX176dxxxxxxxxxxxxxxxddooooddolcc:;;::cccllccccc::;;;;coxxxo;'',''....................................... ..........................''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''....'',,,'.....'''''''''''''''''...............'';:lx0KXXXXXXXXXXXXXXX177xxxxxxxxxxxxxxddoooddddolccc::;:ccccccc::::::;;;;ldxxo:;:;:c:'..................................... ..........................''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''...'',,,'.....'''''''''''''...................'';cox0XXXXXXXXXXXXXXXX178xxxxxxxxxxxxxddddxxxxdolllllc:::ccccccc::::;;;,;lddddc:::coo;..................................... ...........................'''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''...'',,,'.....'''''''''''''...................'';:ldOKXXXXXXXXXXXXXXX179xxxxkkkkkxxxxxxxxxxxdollloolccccccccc::;;;;;;;coxxdo:,;codc,..................................... ..........................'''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''...'',,,'........''''''''.....................'',:ldOKXXXXXXXXXXXXXXX180xxxkkkkkkkkkkkkkkxxxoolodddolllccccc::::::ccldkkkxd:,,:llc:,..................................... .........................'''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''..''',,'.....................................'',:ldOKXXXXXXXXXXXXXXX181xxkkkkkkkkkkkkkkkxxdooodxddoooooooooooooddxxkkkkkxl,.''',,,'................................... .........................''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''..''',,'.....................................'',coxk0XXXXXXXXXXXXXXX182xkkkkOOkkkkkkkkkxxddoddxddddddddddxxxxxxxxxkkkkkkxl,''....................................... .........................''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''..''',,'.....................................'',:odk0KXXXXXXXXXXXXXX183kkkkOOOOOkkkkxxxdddddxxxdddddddddxxxxxxxxkkkkkkkkkdc;;;,'................................... .........................''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''..''''''.....................................'';:cdk0KXXXXXXXXXXXXXX184kkkOOOOOkkkkkxxxdddxxkxxdddxxxxoloddxxxxkkkkkkkkkkxlc::::'................................. ........................''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''..''''''.....................................'',;:lx0XXXXXXXXXXXXXXX185kkOOOOOkkkkkkkxxddxxkkxxxxxxxxdc;:clodxkkkkkkkkkkkxlcccl:'............................... .........................'''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''..''''''.....................................'',;:cd0KXXXXXXXXXXXXXX...
echo_message.py
Source:echo_message.py
1# Copyright (c) 2011 The Chromium Authors. All rights reserved.2# Use of this source code is governed by a BSD-style license that can be3# found in the LICENSE file.4"""Provides utility functions for TCP/UDP echo servers and clients.5This program has classes and functions to encode, decode, calculate checksum6and verify the "echo request" and "echo response" messages. "echo request"7message is an echo message sent from the client to the server. "echo response"8message is a response from the server to the "echo request" message from the9client.10The format of "echo request" message is11<version><checksum><payload_size><payload>. <version> is the version number12of the "echo request" protocol. <checksum> is the checksum of the <payload>.13<payload_size> is the size of the <payload>. <payload> is the echo message.14The format of "echo response" message is15<version><checksum><payload_size><key><encoded_payload>.<version>,16<checksum> and <payload_size> are same as what is in the "echo request" message.17<encoded_payload> is encoded version of the <payload>. <key> is a randomly18generated key that is used to encode/decode the <payload>.19"""20__author__ = 'rtenneti@google.com (Raman Tenneti)'21from itertools import cycle22from itertools import izip23import random24class EchoHeader(object):25 """Class to keep header info of the EchoRequest and EchoResponse messages.26 This class knows how to parse the checksum, payload_size from the27 "echo request" and "echo response" messages. It holds the checksum,28 payload_size of the "echo request" and "echo response" messages.29 """30 # This specifies the version.31 VERSION_STRING = '01'32 # This specifies the starting position of the checksum and length of the33 # checksum. Maximum value for the checksum is less than (2 ** 31 - 1).34 CHECKSUM_START = 235 CHECKSUM_LENGTH = 1036 CHECKSUM_FORMAT = '%010d'37 CHECKSUM_END = CHECKSUM_START + CHECKSUM_LENGTH38 # This specifies the starting position of the <payload_size> and length of the39 # <payload_size>. Maximum number of bytes that can be sent in the <payload> is40 # 9,999,999.41 PAYLOAD_SIZE_START = CHECKSUM_END42 PAYLOAD_SIZE_LENGTH = 743 PAYLOAD_SIZE_FORMAT = '%07d'44 PAYLOAD_SIZE_END = PAYLOAD_SIZE_START + PAYLOAD_SIZE_LENGTH45 def __init__(self, checksum=0, payload_size=0):46 """Initializes the checksum and payload_size of self (EchoHeader).47 Args:48 checksum: (int)49 The checksum of the payload.50 payload_size: (int)51 The size of the payload.52 """53 self.checksum = checksum54 self.payload_size = payload_size55 def ParseAndInitialize(self, echo_message):56 """Parses the echo_message and initializes self with the parsed data.57 This method extracts checksum, and payload_size from the echo_message58 (echo_message could be either echo_request or echo_response messages) and59 initializes self (EchoHeader) with checksum and payload_size.60 Args:61 echo_message: (string)62 The string representation of EchoRequest or EchoResponse objects.63 Raises:64 ValueError: Invalid data65 """66 if not echo_message or len(echo_message) < EchoHeader.PAYLOAD_SIZE_END:67 raise ValueError('Invalid data:%s' % echo_message)68 self.checksum = int(echo_message[69 EchoHeader.CHECKSUM_START:EchoHeader.CHECKSUM_END])70 self.payload_size = int(echo_message[71 EchoHeader.PAYLOAD_SIZE_START:EchoHeader.PAYLOAD_SIZE_END])72 def InitializeFromPayload(self, payload):73 """Initializes the EchoHeader object with the payload.74 It calculates checksum for the payload and initializes self (EchoHeader)75 with the calculated checksum and size of the payload.76 This method is used by the client code during testing.77 Args:78 payload: (string)79 The payload is the echo string (like 'hello').80 Raises:81 ValueError: Invalid data82 """83 if not payload:84 raise ValueError('Invalid data:%s' % payload)85 self.payload_size = len(payload)86 self.checksum = Checksum(payload, self.payload_size)87 def __str__(self):88 """String representation of the self (EchoHeader).89 Returns:90 A string representation of self (EchoHeader).91 """92 checksum_string = EchoHeader.CHECKSUM_FORMAT % self.checksum93 payload_size_string = EchoHeader.PAYLOAD_SIZE_FORMAT % self.payload_size94 return EchoHeader.VERSION_STRING + checksum_string + payload_size_string95class EchoRequest(EchoHeader):96 """Class holds data specific to the "echo request" message.97 This class holds the payload extracted from the "echo request" message.98 """99 # This specifies the starting position of the <payload>.100 PAYLOAD_START = EchoHeader.PAYLOAD_SIZE_END101 def __init__(self):102 """Initializes EchoRequest object."""103 EchoHeader.__init__(self)104 self.payload = ''105 def ParseAndInitialize(self, echo_request_data):106 """Parses and Initializes the EchoRequest object from the echo_request_data.107 This method extracts the header information (checksum and payload_size) and108 payload from echo_request_data.109 Args:110 echo_request_data: (string)111 The string representation of EchoRequest object.112 Raises:113 ValueError: Invalid data114 """115 EchoHeader.ParseAndInitialize(self, echo_request_data)116 if len(echo_request_data) <= EchoRequest.PAYLOAD_START:117 raise ValueError('Invalid data:%s' % echo_request_data)118 self.payload = echo_request_data[EchoRequest.PAYLOAD_START:]119 def InitializeFromPayload(self, payload):120 """Initializes the EchoRequest object with payload.121 It calculates checksum for the payload and initializes self (EchoRequest)122 object.123 Args:124 payload: (string)125 The payload string for which "echo request" needs to be constructed.126 """127 EchoHeader.InitializeFromPayload(self, payload)128 self.payload = payload129 def __str__(self):130 """String representation of the self (EchoRequest).131 Returns:132 A string representation of self (EchoRequest).133 """134 return EchoHeader.__str__(self) + self.payload135class EchoResponse(EchoHeader):136 """Class holds data specific to the "echo response" message.137 This class knows how to parse the "echo response" message. This class holds138 key, encoded_payload and decoded_payload of the "echo response" message.139 """140 # This specifies the starting position of the |key_| and length of the |key_|.141 # Minimum and maximum values for the |key_| are 100,000 and 999,999.142 KEY_START = EchoHeader.PAYLOAD_SIZE_END143 KEY_LENGTH = 6144 KEY_FORMAT = '%06d'145 KEY_END = KEY_START + KEY_LENGTH146 KEY_MIN_VALUE = 0147 KEY_MAX_VALUE = 999999148 # This specifies the starting position of the <encoded_payload> and length149 # of the <encoded_payload>.150 ENCODED_PAYLOAD_START = KEY_END151 def __init__(self, key='', encoded_payload='', decoded_payload=''):152 """Initializes the EchoResponse object."""153 EchoHeader.__init__(self)154 self.key = key155 self.encoded_payload = encoded_payload156 self.decoded_payload = decoded_payload157 def ParseAndInitialize(self, echo_response_data=None):158 """Parses and Initializes the EchoResponse object from echo_response_data.159 This method calls EchoHeader to extract header information from the160 echo_response_data and it then extracts key and encoded_payload from the161 echo_response_data. It holds the decoded payload of the encoded_payload.162 Args:163 echo_response_data: (string)164 The string representation of EchoResponse object.165 Raises:166 ValueError: Invalid echo_request_data167 """168 EchoHeader.ParseAndInitialize(self, echo_response_data)169 if len(echo_response_data) <= EchoResponse.ENCODED_PAYLOAD_START:170 raise ValueError('Invalid echo_response_data:%s' % echo_response_data)171 self.key = echo_response_data[EchoResponse.KEY_START:EchoResponse.KEY_END]172 self.encoded_payload = echo_response_data[173 EchoResponse.ENCODED_PAYLOAD_START:]174 self.decoded_payload = Crypt(self.encoded_payload, self.key)175 def InitializeFromEchoRequest(self, echo_request):176 """Initializes EchoResponse with the data from the echo_request object.177 It gets the checksum, payload_size and payload from the echo_request object178 and then encodes the payload with a random key. It also saves the payload179 as decoded_payload.180 Args:181 echo_request: (EchoRequest)182 The EchoRequest object which has "echo request" message.183 """184 self.checksum = echo_request.checksum185 self.payload_size = echo_request.payload_size186 self.key = (EchoResponse.KEY_FORMAT %187 random.randrange(EchoResponse.KEY_MIN_VALUE,188 EchoResponse.KEY_MAX_VALUE))189 self.encoded_payload = Crypt(echo_request.payload, self.key)190 self.decoded_payload = echo_request.payload191 def __str__(self):192 """String representation of the self (EchoResponse).193 Returns:194 A string representation of self (EchoResponse).195 """196 return EchoHeader.__str__(self) + self.key + self.encoded_payload197def Crypt(payload, key):198 """Encodes/decodes the payload with the key and returns encoded payload.199 This method loops through the payload and XORs each byte with the key.200 Args:201 payload: (string)202 The string to be encoded/decoded.203 key: (string)204 The key used to encode/decode the payload.205 Returns:206 An encoded/decoded string.207 """208 return ''.join(chr(ord(x) ^ ord(y)) for (x, y) in izip(payload, cycle(key)))209def Checksum(payload, payload_size):210 """Calculates the checksum of the payload.211 Args:212 payload: (string)213 The payload string for which checksum needs to be calculated.214 payload_size: (int)215 The number of bytes in the payload.216 Returns:217 The checksum of the payload.218 """219 checksum = 0220 length = min(payload_size, len(payload))221 for i in range (0, length):222 checksum += ord(payload[i])223 return checksum224def GetEchoRequestData(payload):225 """Constructs an "echo request" message from the payload.226 It builds an EchoRequest object from the payload and then returns a string227 representation of the EchoRequest object.228 This is used by the TCP/UDP echo clients to build the "echo request" message.229 Args:230 payload: (string)231 The payload string for which "echo request" needs to be constructed.232 Returns:233 A string representation of the EchoRequest object.234 Raises:235 ValueError: Invalid payload236 """237 try:238 echo_request = EchoRequest()239 echo_request.InitializeFromPayload(payload)240 return str(echo_request)241 except (IndexError, ValueError):242 raise ValueError('Invalid payload:%s' % payload)243def GetEchoResponseData(echo_request_data):244 """Verifies the echo_request_data and returns "echo response" message.245 It builds the EchoRequest object from the echo_request_data and then verifies246 the checksum of the EchoRequest is same as the calculated checksum of the247 payload. If the checksums don't match then it returns None. It checksums248 match, it builds the echo_response object from echo_request object and returns249 string representation of the EchoResponse object.250 This is used by the TCP/UDP echo servers.251 Args:252 echo_request_data: (string)253 The string that echo servers send to the clients.254 Returns:255 A string representation of the EchoResponse object. It returns None if the256 echo_request_data is not valid.257 Raises:258 ValueError: Invalid echo_request_data259 """260 try:261 if not echo_request_data:262 raise ValueError('Invalid payload:%s' % echo_request_data)263 echo_request = EchoRequest()264 echo_request.ParseAndInitialize(echo_request_data)265 if Checksum(echo_request.payload,266 echo_request.payload_size) != echo_request.checksum:267 return None268 echo_response = EchoResponse()269 echo_response.InitializeFromEchoRequest(echo_request)270 return str(echo_response)271 except (IndexError, ValueError):272 raise ValueError('Invalid payload:%s' % echo_request_data)273def DecodeAndVerify(echo_request_data, echo_response_data):274 """Decodes and verifies the echo_response_data.275 It builds EchoRequest and EchoResponse objects from the echo_request_data and276 echo_response_data. It returns True if the EchoResponse's payload and277 checksum match EchoRequest's.278 This is used by the TCP/UDP echo clients for testing purposes.279 Args:280 echo_request_data: (string)281 The request clients sent to echo servers.282 echo_response_data: (string)283 The response clients received from the echo servers.284 Returns:285 True if echo_request_data and echo_response_data match.286 Raises:287 ValueError: Invalid echo_request_data or Invalid echo_response288 """289 try:290 echo_request = EchoRequest()291 echo_request.ParseAndInitialize(echo_request_data)292 except (IndexError, ValueError):293 raise ValueError('Invalid echo_request:%s' % echo_request_data)294 try:295 echo_response = EchoResponse()296 echo_response.ParseAndInitialize(echo_response_data)297 except (IndexError, ValueError):298 raise ValueError('Invalid echo_response:%s' % echo_response_data)299 return (echo_request.checksum == echo_response.checksum and...
client_test.py
Source:client_test.py
1#!/usr/bin/env python2#3# Copyright (C) 2009 Google Inc.4#5# Licensed under the Apache License, Version 2.0 (the "License");6# you may not use this file except in compliance with the License.7# You may obtain a copy of the License at8#9# http://www.apache.org/licenses/LICENSE-2.010#11# Unless required by applicable law or agreed to in writing, software12# distributed under the License is distributed on an "AS IS" BASIS,13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.14# See the License for the specific language governing permissions and15# limitations under the License.16# This module is used for version 2 of the Google Data APIs.17# This test may make an actual HTTP request.18__author__ = 'j.s@google.com (Jeff Scudder)'19import unittest20import atom.http_core21import atom.auth22import atom.client23import atom.mock_http_core24class AtomPubClientEchoTest(unittest.TestCase):25 def test_simple_request_with_no_client_defaults(self):26 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient())27 self.assert_(client.host is None)28 self.assert_(client.auth_token is None)29 # Make several equivalent requests.30 responses = [client.request('GET', 'http://example.org/'),31 client.request(http_request=atom.http_core.HttpRequest(32 uri=atom.http_core.Uri('http', 'example.org', path='/'),33 method='GET')),34 client.request('GET', 35 http_request=atom.http_core.HttpRequest(36 uri=atom.http_core.Uri('http', 'example.org', 37 path='/')))]38 for response in responses:39 self.assert_(response.getheader('Echo-Host') == 'example.org:None')40 self.assert_(response.getheader('Echo-Uri') == '/')41 self.assert_(response.getheader('Echo-Scheme') == 'http')42 self.assert_(response.getheader('Echo-Method') == 'GET')43 self.assertTrue(response.getheader('User-Agent').startswith('gdata-py/'))44 def test_auth_request_with_no_client_defaults(self):45 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient())46 token = atom.auth.BasicAuth('Jeff', '123')47 response = client.request('POST', 'https://example.net:8080/', 48 auth_token=token)49 self.assert_(response.getheader('Echo-Host') == 'example.net:8080')50 self.assert_(response.getheader('Echo-Uri') == '/')51 self.assert_(response.getheader('Echo-Scheme') == 'https')52 self.assert_(response.getheader('Authorization') == 'Basic SmVmZjoxMjM=')53 self.assert_(response.getheader('Echo-Method') == 'POST')54 def test_request_with_client_defaults(self):55 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient(), 56 'example.com', atom.auth.BasicAuth('Jeff', '123'))57 self.assert_(client.host == 'example.com')58 self.assert_(client.auth_token is not None)59 self.assert_(client.auth_token.basic_cookie == 'SmVmZjoxMjM=')60 response = client.request('GET', 'http://example.org/')61 self.assert_(response.getheader('Echo-Host') == 'example.org:None')62 self.assert_(response.getheader('Echo-Uri') == '/')63 self.assert_(response.getheader('Echo-Scheme') == 'http')64 self.assert_(response.getheader('Echo-Method') == 'GET')65 self.assert_(response.getheader('Authorization') == 'Basic SmVmZjoxMjM=')66 response = client.request('GET', '/')67 self.assert_(response.getheader('Echo-Host') == 'example.com:None')68 self.assert_(response.getheader('Echo-Uri') == '/')69 self.assert_(response.getheader('Echo-Scheme') == 'http')70 self.assert_(response.getheader('Authorization') == 'Basic SmVmZjoxMjM=')71 response = client.request('GET', '/', 72 http_request=atom.http_core.HttpRequest(73 uri=atom.http_core.Uri(port=99)))74 self.assert_(response.getheader('Echo-Host') == 'example.com:99')75 self.assert_(response.getheader('Echo-Uri') == '/')76 def test_get(self):77 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient())78 response = client.get('http://example.com/simple')79 self.assert_(response.getheader('Echo-Host') == 'example.com:None')80 self.assert_(response.getheader('Echo-Uri') == '/simple')81 self.assert_(response.getheader('Echo-Method') == 'GET')82 response = client.Get(uri='http://example.com/simple2')83 self.assert_(response.getheader('Echo-Uri') == '/simple2')84 self.assert_(response.getheader('Echo-Method') == 'GET')85 def test_modify_request_using_args(self):86 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient())87 class RequestModifier(object):88 def modify_request(self, http_request):89 http_request.headers['Special'] = 'Set'90 response = client.get('http://example.com/modified', 91 extra=RequestModifier())92 self.assert_(response.getheader('Echo-Host') == 'example.com:None')93 self.assert_(response.getheader('Echo-Uri') == '/modified')94 self.assert_(response.getheader('Echo-Method') == 'GET')95 self.assert_(response.getheader('Special') == 'Set')96 def test_post(self):97 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient())98 class TestData(object): 99 def modify_request(self, http_request):100 http_request.add_body_part('test body', 'text/testdata')101 response = client.Post(uri='http://example.com/', data=TestData())102 self.assert_(response.getheader('Echo-Host') == 'example.com:None')103 self.assert_(response.getheader('Echo-Uri') == '/')104 self.assert_(response.getheader('Echo-Method') == 'POST')105 self.assert_(response.getheader('Content-Length') == str(len('test body')))106 self.assert_(response.getheader('Content-Type') == 'text/testdata')107 self.assert_(response.read(2) == 'te')108 self.assert_(response.read() == 'st body')109 response = client.post(data=TestData(), uri='http://example.com/')110 self.assert_(response.read() == 'test body')111 self.assert_(response.getheader('Content-Type') == 'text/testdata')112 # Don't pass in a body, but use an extra kwarg to add the body to the113 # http_request.114 response = client.post(x=TestData(), uri='http://example.com/')115 self.assert_(response.read() == 'test body')116 def test_put(self):117 body_text = '<put>test</put>' 118 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient())119 class TestData(object): 120 def modify_request(self, http_request):121 http_request.add_body_part(body_text, 'application/xml')122 response = client.put('http://example.org', TestData())123 self.assert_(response.getheader('Echo-Host') == 'example.org:None')124 self.assert_(response.getheader('Echo-Uri') == '/')125 self.assert_(response.getheader('Echo-Method') == 'PUT')126 self.assert_(response.getheader('Content-Length') == str(len(body_text)))127 self.assert_(response.getheader('Content-Type') == 'application/xml')128 response = client.put(uri='http://example.org', data=TestData())129 self.assert_(response.getheader('Content-Length') == str(len(body_text)))130 self.assert_(response.getheader('Content-Type') == 'application/xml')131 def test_delete(self):132 client = atom.client.AtomPubClient(atom.mock_http_core.EchoHttpClient(),133 source='my new app')134 response = client.Delete('http://example.com/simple')135 self.assertEqual(response.getheader('Echo-Host'), 'example.com:None')136 self.assertEqual(response.getheader('Echo-Uri'), '/simple')137 self.assertEqual(response.getheader('Echo-Method'), 'DELETE')138 response = client.delete(uri='http://example.com/d')139 self.assertEqual(response.getheader('Echo-Uri'), '/d')140 self.assertEqual(response.getheader('Echo-Method'), 'DELETE')141 self.assertTrue(142 response.getheader('User-Agent').startswith('my new app gdata-py/'))143def suite():144 return unittest.TestSuite((unittest.makeSuite(AtomPubClientEchoTest, 'test'),145 ))146if __name__ == '__main__':...
lineedits.py
Source:lineedits.py
1#!/usr/bin/env python2#############################################################################3##4## Copyright (C) 2010 Riverbank Computing Limited.5## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).6## All rights reserved.7##8## This file is part of the examples of PyQt.9##10## $QT_BEGIN_LICENSE:BSD$11## You may use this file under the terms of the BSD license as follows:12##13## "Redistribution and use in source and binary forms, with or without14## modification, are permitted provided that the following conditions are15## met:16## * Redistributions of source code must retain the above copyright17## notice, this list of conditions and the following disclaimer.18## * Redistributions in binary form must reproduce the above copyright19## notice, this list of conditions and the following disclaimer in20## the documentation and/or other materials provided with the21## distribution.22## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor23## the names of its contributors may be used to endorse or promote24## products derived from this software without specific prior written25## permission.26##27## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS28## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT29## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR30## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT31## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,32## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT33## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,34## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY35## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT36## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE37## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."38## $QT_END_LICENSE$39##40#############################################################################41from PyQt4 import QtCore, QtGui42class Window(QtGui.QWidget):43 def __init__(self):44 super(Window, self).__init__()45 echoGroup = QtGui.QGroupBox("Echo")46 echoLabel = QtGui.QLabel("Mode:")47 echoComboBox = QtGui.QComboBox()48 echoComboBox.addItem("Normal")49 echoComboBox.addItem("Password")50 echoComboBox.addItem("PasswordEchoOnEdit")51 echoComboBox.addItem("No Echo")52 self.echoLineEdit = QtGui.QLineEdit()53 self.echoLineEdit.setFocus()54 validatorGroup = QtGui.QGroupBox("Validator")55 validatorLabel = QtGui.QLabel("Type:")56 validatorComboBox = QtGui.QComboBox()57 validatorComboBox.addItem("No validator")58 validatorComboBox.addItem("Integer validator")59 validatorComboBox.addItem("Double validator")60 self.validatorLineEdit = QtGui.QLineEdit()61 alignmentGroup = QtGui.QGroupBox("Alignment")62 alignmentLabel = QtGui.QLabel("Type:")63 alignmentComboBox = QtGui.QComboBox()64 alignmentComboBox.addItem("Left")65 alignmentComboBox.addItem("Centered")66 alignmentComboBox.addItem("Right")67 self.alignmentLineEdit = QtGui.QLineEdit()68 inputMaskGroup = QtGui.QGroupBox("Input mask")69 inputMaskLabel = QtGui.QLabel("Type:")70 inputMaskComboBox = QtGui.QComboBox()71 inputMaskComboBox.addItem("No mask")72 inputMaskComboBox.addItem("Phone number")73 inputMaskComboBox.addItem("ISO date")74 inputMaskComboBox.addItem("License key")75 self.inputMaskLineEdit = QtGui.QLineEdit()76 accessGroup = QtGui.QGroupBox("Access")77 accessLabel = QtGui.QLabel("Read-only:")78 accessComboBox = QtGui.QComboBox()79 accessComboBox.addItem("False")80 accessComboBox.addItem("True")81 self.accessLineEdit = QtGui.QLineEdit()82 echoComboBox.activated.connect(self.echoChanged)83 validatorComboBox.activated.connect(self.validatorChanged)84 alignmentComboBox.activated.connect(self.alignmentChanged)85 inputMaskComboBox.activated.connect(self.inputMaskChanged)86 accessComboBox.activated.connect(self.accessChanged)87 echoLayout = QtGui.QGridLayout()88 echoLayout.addWidget(echoLabel, 0, 0)89 echoLayout.addWidget(echoComboBox, 0, 1)90 echoLayout.addWidget(self.echoLineEdit, 1, 0, 1, 2)91 echoGroup.setLayout(echoLayout)92 validatorLayout = QtGui.QGridLayout()93 validatorLayout.addWidget(validatorLabel, 0, 0)94 validatorLayout.addWidget(validatorComboBox, 0, 1)95 validatorLayout.addWidget(self.validatorLineEdit, 1, 0, 1, 2)96 validatorGroup.setLayout(validatorLayout)97 alignmentLayout = QtGui.QGridLayout()98 alignmentLayout.addWidget(alignmentLabel, 0, 0)99 alignmentLayout.addWidget(alignmentComboBox, 0, 1)100 alignmentLayout.addWidget(self.alignmentLineEdit, 1, 0, 1, 2)101 alignmentGroup. setLayout(alignmentLayout)102 inputMaskLayout = QtGui.QGridLayout()103 inputMaskLayout.addWidget(inputMaskLabel, 0, 0)104 inputMaskLayout.addWidget(inputMaskComboBox, 0, 1)105 inputMaskLayout.addWidget(self.inputMaskLineEdit, 1, 0, 1, 2)106 inputMaskGroup.setLayout(inputMaskLayout)107 accessLayout = QtGui.QGridLayout()108 accessLayout.addWidget(accessLabel, 0, 0)109 accessLayout.addWidget(accessComboBox, 0, 1)110 accessLayout.addWidget(self.accessLineEdit, 1, 0, 1, 2)111 accessGroup.setLayout(accessLayout)112 layout = QtGui.QGridLayout()113 layout.addWidget(echoGroup, 0, 0)114 layout.addWidget(validatorGroup, 1, 0)115 layout.addWidget(alignmentGroup, 2, 0)116 layout.addWidget(inputMaskGroup, 0, 1)117 layout.addWidget(accessGroup, 1, 1)118 self.setLayout(layout)119 self.setWindowTitle("Line Edits")120 def echoChanged(self, index):121 if index == 0:122 self.echoLineEdit.setEchoMode(QtGui.QLineEdit.Normal)123 elif index == 1:124 self.echoLineEdit.setEchoMode(QtGui.QLineEdit.Password)125 elif index == 2:126 self.echoLineEdit.setEchoMode(QtGui.QLineEdit.PasswordEchoOnEdit)127 elif index == 3:128 self.echoLineEdit.setEchoMode(QtGui.QLineEdit.NoEcho)129 def validatorChanged(self, index):130 if index == 0:131 self.validatorLineEdit.setValidator(0)132 elif index == 1:133 self.validatorLineEdit.setValidator(QtGui.QIntValidator(self.validatorLineEdit))134 elif index == 2:135 self.validatorLineEdit.setValidator(QtGui.QDoubleValidator(-999.0, 999.0, 2, self.validatorLineEdit))136 self.validatorLineEdit.clear()137 def alignmentChanged(self, index):138 if index == 0:139 self.alignmentLineEdit.setAlignment(QtCore.Qt.AlignLeft)140 elif index == 1:141 self.alignmentLineEdit.setAlignment(QtCore.Qt.AlignCenter)142 elif index == 2:143 self.alignmentLineEdit.setAlignment(QtCore.Qt.AlignRight)144 def inputMaskChanged(self, index):145 if index == 0:146 self.inputMaskLineEdit.setInputMask('')147 elif index == 1:148 self.inputMaskLineEdit.setInputMask('+99 99 99 99 99;_')149 elif index == 2:150 self.inputMaskLineEdit.setInputMask('0000-00-00')151 self.inputMaskLineEdit.setText('00000000')152 self.inputMaskLineEdit.setCursorPosition(0)153 elif index == 3:154 self.inputMaskLineEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#')155 def accessChanged(self, index):156 if index == 0:157 self.accessLineEdit.setReadOnly(False)158 elif index == 1:159 self.accessLineEdit.setReadOnly(True)160if __name__ == '__main__':161 import sys162 app = QtGui.QApplication(sys.argv)163 window = Window()164 window.show()...
BUILD
Source:BUILD
1(2 # clear variables:3 unset CONFIGURE_SENDMAIL REUSE AGREED JUNK4 # global options for sendmail:5 echo "define(\`confGBINGRP', \`mail')" >> devtools/Site/site.config.m46 echo "define(\`confMSPQOWN', \`mail')" >> devtools/Site/site.config.m47 echo "define(\`confTRUSTED_USER', \`mail')" >> devtools/Site/site.config.m48 echo "define(\`confRUN_AS_USER', \`mail:mail')" >> devtools/Site/site.config.m49 #10 echo "define(\`confMANROOT', \`/usr/share/man/man')" >> devtools/Site/site.config.m411 # 12 # Now try to configure sendmail to create a sendmail.cf for this site13 #14 echo ""15 echo "================"16 echo ""17 echo "Sendmail can now be configured. If you have a working setup and wish"18 echo "to keep exactly the same config you may safely skip this section by"19 echo "answering 'n' to the next question. Alternatively, you can easily"20 echo "reconfigure your current setup by entering the configuration part"21 echo "of the installation by typing 'y'"22 echo ""23 # ask whether we want this at all24 if query "Do you wish to (re)configure sendmail?" y25 then26 # do we have a backup sendmail.mc in /etc/mail???27 if [ -f /etc/mail/sendmail.mc ]; then28 # there exists a previously stored sendmail.mc!29 # suggest using this one to create new config first30 echo ""31 echo "Sendmail was previously configured already and we can re-use"32 echo "this configuration to reconfigure sendmail. Do you wish to"33 echo "use the existing sendmail.mc to reconfigure sendmail?"34 echo ""35 if query "Re-use configuration?" y36 then37 cp /etc/mail/sendmail.mc cf/cf/sendmail.mc38 fi39 fi40 41 # suggest using the default generic-linux.mc if a sendmail.mc42 # does not exist yet (not reusing an old one)43 if [ ! -f cf/cf/sendmail.mc ]; then44 echo ""45 echo "I will put a default config.mc so you can edit it"46 echo "manually. Please refer to the sendmail manual for"47 echo "which features you need to add, change or remove."48 echo "NOW would be a great time to fire up your browser"49 echo "and surf to www.sendmail.org!"50 echo ""51 cp cf/cf/generic-linux.mc cf/cf/sendmail.mc52 echo "Press Enter..."53 read JUNK54 fi55 56 # check for editor57 if [ -z $EDITOR ]; then58 EDITOR=vi59 fi60 61 if [ -z `which $EDITOR` ]; then62 # oops, no editor63 echo "AIEE! I can't find an appropriate editor! please set the EDITOR"64 echo "variable (e.g. export EDITOR=vi) and restart lin sendmail!"65 exit 166 fi67 68 # fire up editor in a loop69 while [ -z $AGREED ]; do70 $EDITOR cf/cf/sendmail.mc71 echo "Here's the result of the sendmail configuration file compilation,"72 echo "if you don't like it or changed your mind, you can repeat this step"73 echo "by typing 'n' at the next question"74 echo ""75 echo "=== sendmail.cf ==="76 cd cf/cf77 sh Build sendmail.cf78 cd ../..79 echo ""80 81 if query "Use this configuration?" y82 then83 # patch submit.cf84 echo ""85 echo "submit.cf will now be patched so it will run as user 'mail:mail',"86 echo "using the standard submit.mc. This is almost always sufficient for"87 echo "any user."88 echo ""89 echo "=== submit.cf ==="90 cd cf/cf91 echo "define(\`confTRUSTED_USER', \`mail')" >> submit.mc92 echo "define(\`confRUN_AS_USER', \`mail:mail')" >> submit.mc93 sh Build submit.cf94 echo ""95 echo "Press enter to continue with final installation..."96 read JUNK97 98 # here we copy it to the right location:99 mkdir -p /etc/mail100 sh Build install-cf101 cd ../..102 # and our bonus: backup our .mc 2 :)103 cp cf/cf/sendmail.mc /etc/mail/sendmail.mc104 cp cf/cf/submit.mc /etc/mail/submit.mc105 AGREED=y106 else107 AGREED=108 fi109 done110 fi111) && (112 113 #114 # First compile the source code115 #116 sh Build117 #118 # Installation of sendmail119 #120 121 # users to be created:122 add_priv_user mail:mail123 124 # directories and files:125 mkdir -p /var/spool/mail126 mkdir -p /var/spool/mqueue127 mkdir -p /var/spool/clientmqueue128 129 # permissions, permissions, permissions!130 chown -R root:mail /etc/mail131 chown mail:mail /var/spool/mail132 chown root:mail /var/spool/mqueue133 chown mail:mail /var/spool/clientmqueue134 135 chmod 1777 /var/spool/mail136 chmod 0750 /var/spool/mqueue137 chmod 0770 /var/spool/clientmqueue138 139 # have sendmail's install do it all over again140 prepare_install141 sh Build install142 ...
echo_path_simulation.py
Source:echo_path_simulation.py
1# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.2#3# Use of this source code is governed by a BSD-style license4# that can be found in the LICENSE file in the root of the source5# tree. An additional intellectual property rights grant can be found6# in the file PATENTS. All contributing project authors may7# be found in the AUTHORS file in the root of the source tree.8"""Echo path simulation module.9"""10import hashlib11import os12from . import signal_processing13class EchoPathSimulator(object):14 """Abstract class for the echo path simulators.15 In general, an echo path simulator is a function of the render signal and16 simulates the propagation of the latter into the microphone (e.g., due to17 mechanical or electrical paths).18 """19 NAME = None20 REGISTERED_CLASSES = {}21 def __init__(self):22 pass23 def Simulate(self, output_path):24 """Creates the echo signal and stores it in an audio file (abstract method).25 Args:26 output_path: Path in which any output can be saved.27 Returns:28 Path to the generated audio track file or None if no echo is present.29 """30 raise NotImplementedError()31 @classmethod32 def RegisterClass(cls, class_to_register):33 """Registers an EchoPathSimulator implementation.34 Decorator to automatically register the classes that extend35 EchoPathSimulator.36 Example usage:37 @EchoPathSimulator.RegisterClass38 class NoEchoPathSimulator(EchoPathSimulator):39 pass40 """41 cls.REGISTERED_CLASSES[class_to_register.NAME] = class_to_register42 return class_to_register43@EchoPathSimulator.RegisterClass44class NoEchoPathSimulator(EchoPathSimulator):45 """Simulates absence of echo."""46 NAME = 'noecho'47 def __init__(self):48 EchoPathSimulator.__init__(self)49 def Simulate(self, output_path):50 return None51@EchoPathSimulator.RegisterClass52class LinearEchoPathSimulator(EchoPathSimulator):53 """Simulates linear echo path.54 This class applies a given impulse response to the render input and then it55 sums the signal to the capture input signal.56 """57 NAME = 'linear'58 def __init__(self, render_input_filepath, impulse_response):59 """60 Args:61 render_input_filepath: Render audio track file.62 impulse_response: list or numpy vector of float values.63 """64 EchoPathSimulator.__init__(self)65 self._render_input_filepath = render_input_filepath66 self._impulse_response = impulse_response67 def Simulate(self, output_path):68 """Simulates linear echo path."""69 # Form the file name with a hash of the impulse response.70 impulse_response_hash = hashlib.sha256(71 str(self._impulse_response).encode('utf-8', 'ignore')).hexdigest()72 echo_filepath = os.path.join(output_path, 'linear_echo_{}.wav'.format(73 impulse_response_hash))74 # If the simulated echo audio track file does not exists, create it.75 if not os.path.exists(echo_filepath):76 render = signal_processing.SignalProcessingUtils.LoadWav(77 self._render_input_filepath)78 echo = signal_processing.SignalProcessingUtils.ApplyImpulseResponse(79 render, self._impulse_response)80 signal_processing.SignalProcessingUtils.SaveWav(echo_filepath, echo)81 return echo_filepath82@EchoPathSimulator.RegisterClass83class RecordedEchoPathSimulator(EchoPathSimulator):84 """Uses recorded echo.85 This class uses the clean capture input file name to build the file name of86 the corresponding recording containing echo (a predefined suffix is used).87 Such a file is expected to be already existing.88 """89 NAME = 'recorded'90 _FILE_NAME_SUFFIX = '_echo'91 def __init__(self, render_input_filepath):92 EchoPathSimulator.__init__(self)93 self._render_input_filepath = render_input_filepath94 def Simulate(self, output_path):95 """Uses recorded echo path."""96 path, file_name_ext = os.path.split(self._render_input_filepath)97 file_name, file_ext = os.path.splitext(file_name_ext)98 echo_filepath = os.path.join(path, '{}{}{}'.format(99 file_name, self._FILE_NAME_SUFFIX, file_ext))100 assert os.path.exists(echo_filepath), (101 'cannot find the echo audio track file {}'.format(echo_filepath))...
composite_echo_gadget.py
Source:composite_echo_gadget.py
1# Copyright 2015 The Chromium Authors. All rights reserved.2# Use of this source code is governed by a BSD-style license that can be3# found in the LICENSE file.4import uuid5import composite_gadget6import echo_gadget7import hid_echo_gadget8import hid_gadget9import usb_constants10import usb_descriptors11class CompositeEchoGadget(composite_gadget.CompositeGadget):12 def __init__(self):13 device_desc = usb_descriptors.DeviceDescriptor(14 idVendor=usb_constants.VendorID.GOOGLE,15 idProduct=usb_constants.ProductID.GOOGLE_COMPOSITE_ECHO_GADGET,16 bcdUSB=0x0210, # USB 2.1 to indicate support for BOS descriptors.17 iManufacturer=1,18 iProduct=2,19 iSerialNumber=3,20 bcdDevice=0x0100)21 echo_feature = echo_gadget.EchoCompositeFeature(22 endpoints=[(0, 5, 0x81, 0x01), (1, 6, 0x82, 0x02), (2, 7, 0x83, 0x03)])23 hid_echo_feature = hid_echo_gadget.EchoFeature()24 hid_feature = hid_gadget.HidCompositeFeature(25 report_desc=hid_echo_gadget.EchoFeature.REPORT_DESC,26 features={0: hid_echo_feature},27 interface_number=3,28 interface_string=4,29 in_endpoint=0x84, out_endpoint=0x04)30 super(CompositeEchoGadget, self).__init__(31 device_desc, [echo_feature, hid_feature])32 self.AddStringDescriptor(1, 'Google Inc.')33 self.AddStringDescriptor(2, 'Echo Gadget')34 self.AddStringDescriptor(3, '{:06X}'.format(uuid.getnode()))35 self.AddStringDescriptor(4, 'HID Echo')36 self.AddStringDescriptor(5, 'Interrupt Echo')37 self.AddStringDescriptor(6, 'Bulk Echo')38 self.AddStringDescriptor(7, 'Isochronous Echo')39 # Enable Microsoft OS 2.0 Descriptors for Windows 8.1 and above.40 self.EnableMicrosoftOSDescriptorsV2(vendor_code=0x02)41 # These are used to force Windows to load WINUSB.SYS for the echo functions.42 self.SetMicrosoftCompatId(0, 'WINUSB')43 self.SetMicrosoftCompatId(1, 'WINUSB')44 self.SetMicrosoftCompatId(2, 'WINUSB')45def RegisterHandlers():46 """Registers web request handlers with the application server."""47 import server48 from tornado import web49 class WebConfigureHandler(web.RequestHandler):50 def post(self):51 server.SwitchGadget(CompositeEchoGadget())52 server.app.add_handlers('.*$', [53 (r'/composite_echo/configure', WebConfigureHandler),...
echo_path_simulation_factory.py
Source:echo_path_simulation_factory.py
1# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.2#3# Use of this source code is governed by a BSD-style license4# that can be found in the LICENSE file in the root of the source5# tree. An additional intellectual property rights grant can be found6# in the file PATENTS. All contributing project authors may7# be found in the AUTHORS file in the root of the source tree.8"""Echo path simulation factory module.9"""10import numpy as np11from . import echo_path_simulation12class EchoPathSimulatorFactory(object):13 # TODO(alessiob): Replace 20 ms delay (at 48 kHz sample rate) with a more14 # realistic impulse response.15 _LINEAR_ECHO_IMPULSE_RESPONSE = np.array([0.0]*(20 * 48) + [0.15])16 def __init__(self):17 pass18 @classmethod19 def GetInstance(cls, echo_path_simulator_class, render_input_filepath):20 """Creates an EchoPathSimulator instance given a class object.21 Args:22 echo_path_simulator_class: EchoPathSimulator class object (not an23 instance).24 render_input_filepath: Path to the render audio track file.25 Returns:26 An EchoPathSimulator instance.27 """28 assert render_input_filepath is not None or (29 echo_path_simulator_class == echo_path_simulation.NoEchoPathSimulator)30 if echo_path_simulator_class == echo_path_simulation.NoEchoPathSimulator:31 return echo_path_simulation.NoEchoPathSimulator()32 elif echo_path_simulator_class == (33 echo_path_simulation.LinearEchoPathSimulator):34 return echo_path_simulation.LinearEchoPathSimulator(35 render_input_filepath, cls._LINEAR_ECHO_IMPULSE_RESPONSE)36 else:...
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { MockBuilder } from 'ng-mocks';3import { MockRender } from 'ng-mocks';4import { MockInstance } from 'ng-mocks';5import { MockRenderOptions } from 'ng-mocks';6import { MockReset } from 'ng-mocks';7import { MockRenderResult } from 'ng-mocks';8import { MockModule } from 'ng-mocks';9import { MockProvider } from 'ng-mocks';10import { MockRenderComponent } from 'ng-mocks';11import { MockComponent } from 'ng-mocks';12import { MockDirective } from 'ng-mocks';13import { MockPipe } from 'ng-mocks';14import { MockService } from 'ng-mocks';15import { MockedComponent } from 'ng-mocks';16import { MockedDirective } from 'ng-mocks';17import { MockedPipe } from 'ng-mocks';18import { MockedService } from 'ng-mocks';19import { MockedType } from 'ng-mocks';20import { MockRenderOptions } from 'ng-mocks';21import { MockRenderResult } from 'ng-mocks';22import { MockRenderComponent } from 'ng-mocks';23import { MockBuilder } from 'ng-mocks';24import { MockRender } from 'ng-mocks';25import { MockInstance } from 'ng-mocks';26import { MockReset } from 'ng-mocks';27import { MockRenderResult } from 'ng
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { MockBuilder } from 'ng-mocks';3import { MockRender } from 'ng-mocks';4import { MockModule } from 'ng-mocks';5import { MockDirective } from 'ng-mocks';6import { MockProvider } from 'ng-mocks';7import { MockPipe } from 'ng-mocks';8import { MockInstance } from 'ng-mocks';9import { MockRenderOptions } from 'ng-mocks';10import { MockService } from 'ng-mocks';11import { MockedComponent } from 'ng-mocks';12import { MockedDirective } from 'ng-mocks';13import { MockedPipe } from 'ng-mocks';14import { MockedProvider } from 'ng-mocks';15import { MockedService } from 'ng-mocks';16import { MockedType } from 'ng-mocks';17import { MockRenderResult } from 'ng-mocks';18import { MockedAbstract } from 'ng-mocks';19import { MockedClass } from 'ng-mocks';20import { MockedFunction } from 'ng-mocks';21import { MockedInterface } from 'ng-mocks';22import { MockedModule } from 'ng-mocks';23import { MockedNgModule } from 'ng-mocks';24import { MockedObject } from 'ng-mocks';25import { MockedTemplate } from 'ng-mocks';26import { MockedValue } from 'ng-mocks';
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { AppComponent } from './app.component';3describe('AppComponent', () => {4 it('should create the app', () => {5 const fixture = echo({6 });7 expect(fixture.componentInstance).toBeTruthy();8 });9});10import { echo } from 'ng-mocks';11import { AppComponent } from './app.component';12import { MyService } from './my.service';13describe('AppComponent', () => {14 it('should create the app', () => {15 const fixture = echo({16 {17 useValue: {18 get: () => 'mocked value',19 },20 },21 });22 expect(fixture.componentInstance).toBeTruthy();23 });24});25import { echo } from 'ng-mocks';26import { AppComponent } from './app.component';27import { MyService } from './my.service';28describe('AppComponent', () => {29 it('should create the app', () => {30 const fixture = echo({31 {32 useValue: {33 get: () => 'mocked value',34 },35 },36 });37 expect(fixture.componentInstance).toBeTruthy();38 });39});40import
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { MyComponent } from './my.component';3describe('MyComponent', () => {4 it('should echo', () => {5 const fixture = echo({6 {7 useValue: { value: 'hello' },8 },9 });10 expect(fixture).toBeDefined();11 });12});13import { echo } from 'ng-mocks';14import { MyComponent } from './my.component';15describe('MyComponent', () => {16 it('should echo', () => {17 const fixture = echo({18 {19 useValue: { value: 'hello' },20 },21 });22 expect(fixture).toBeDefined();23 });24});25import { echo } from 'ng-mocks';26import { MyComponent } from './my.component';27describe('MyComponent', () => {28 it('should echo', () => {29 const fixture = echo({30 {
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { MyComponent } from './my-component';3import { MyModule } from './my-module';4const fixture = echo({5 imports: [MyModule],6});7expect(fixture.nativeElement.innerHTML).toContain('Hello world!');8import { NgModule } from '@angular/core';9import { MyComponent } from './my-component';10@NgModule({11})12export class MyModule {}13import { Component } from '@angular/core';14@Component({15})16export class MyComponent {}17import { echo } from 'ng-mocks';18import { MyComponent } from './my-component';19import { MyModule } from './my-module';20const fixture = echo({21 imports: [MyModule],22});23expect(fixture.nativeElement.innerHTML).toContain('Hello world!');24import { NgModule } from '@angular/core';25import { MyComponent } from './my-component';26@NgModule({27})28export class MyModule {}29import { Component } from '@angular/core';30@Component({31})32export class MyComponent {}33import { echo } from 'ng-mocks';34import { MyComponent } from './my-component';35import { MyModule } from './my-module';36const fixture = echo({37 imports: [MyModule],38});39expect(fixture.nativeElement.innerHTML).toContain('Hello world!');40import { NgModule } from '@angular/core';41import { MyComponent } from './my-component';42@NgModule({43})44export class MyModule {}45import { Component } from '@angular/core';46@Component({
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { createComponent } from 'ng-mocks';3import { MyComponent } from './my-component';4describe('MyComponent', () => {5 it('should render the component', () => {6 const fixture = createComponent(MyComponent);7 fixture.detectChanges();8 expect(echo(fixture)).toMatchSnapshot();9 });10});11import { createComponent } from 'ng-mocks';12import { MyComponent } from './my-component';13describe('MyComponent', () => {14 it('should render the component', () => {15 const fixture = createComponent(MyComponent);16 fixture.detectChanges();17 expect(fixture.nativeElement).toMatchSnapshot();18 });19});20import { createComponent } from 'ng-mocks';21import { MyComponent } from './my-component';22describe('MyComponent', () => {23 it('should render the component', () => {24 const fixture = createComponent(MyComponent);25 fixture.detectChanges();26 expect(fixture.nativeElement).toMatchSnapshot();27 });28});29import { createComponent } from 'ng-mocks';30import { MyComponent } from './my-component';31describe('MyComponent', () => {32 it('should render the component', () => {33 const fixture = createComponent(MyComponent);34 fixture.detectChanges();35 expect(fixture.nativeElement).toMatchSnapshot();36 });37});38import { createComponent } from 'ng-mocks';39import { MyComponent } from './my-component';40describe('MyComponent', () => {41 it('should render the component', () => {42 const fixture = createComponent(MyComponent);43 fixture.detectChanges();44 expect(fixture.nativeElement).toMatchSnapshot();45 });46});47import { createComponent } from 'ng-mocks';48import { MyComponent } from './my-component';49describe('MyComponent', () => {
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { MockComponent } from 'ng-mocks';3import { MockDirective } from 'ng-mocks';4import { MockPipe } from 'ng-mocks';5import { MockService } from 'ng-mocks';6import { MockModule } from 'ng-mocks';7import { MockNgModule } from 'ng-mocks';8import { MockRender } from 'ng-mocks';9import { MockInstance } from 'ng-mocks';10import { MockProvider } from 'ng-mocks';11import { MockReset } from 'ng-mocks';12import { MockBuilder } from 'ng-mocks';13import { MockRenderOptions } from 'ng-mocks';14import { MockRenderComponent } from 'ng-mocks';15import { MockRenderDirective } from 'ng-mocks';16import { MockRenderPipe } from 'ng-mocks';17import { MockRenderService } from 'ng-mocks';18import { MockRenderProvider } from 'ng-mocks';19import { MockRenderComponentType } from 'ng-mocks';20import { MockRenderDirectiveType } from 'ng-mocks';21import { MockRenderPipeType } from 'ng-mocks';22import { MockRenderServiceType } from 'ng-mocks';
Using AI Code Generation
1import { echo } from 'ng-mocks';2describe('test', () => {3 it('should echo', () => {4 expect(echo('test')).toEqual('test');5 });6});7module.exports = function(config) {8 config.set({9 require('karma-jasmine'),10 require('karma-chrome-launcher'),11 require('karma-jasmine-html-reporter'),12 require('karma-coverage-istanbul-reporter'),13 require('ng-mocks'),14 require('@angular-devkit/build-angular/plugins/karma')15 client: {16 },17 coverageIstanbulReporter: {18 dir: require('path').join(__dirname, '../coverage'),19 },20 });21};22{23 "compilerOptions": {24 },25}26@NgModule({27 imports: [28})29export class AppModule { }30import { TestBed } from '@
Using AI Code Generation
1import { echo } from 'ng-mocks';2import { MyComponent } from './my.component';3import { MyService } from './my.service';4const myServiceMock = {5 getSomething: () => 'something',6};7const component = echo({8 providers: [{ provide: MyService, useValue: myServiceMock }],9});10expect(component).toBeDefined();11expect(component.service).toBe(myServiceMock);12expect(component.service.getSomething()
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!