asciio
``'++++'+++:,
,+@@@@@@@@@###+@@,;@@+
.@@@+'@##+@@##@++#@';@@@@@@@`
:@@@@#;`',@@';+@@;`::#@@@@,# #;#@@#;
@@+@,+#:;@#;;@#@@@@','@@#,; ,#'''`::,@#@@,
##@@'@'+#@@@@@:;@@@@;@##@@`:#@# `.,.#,@+:.#`
@@'@:@@,@@@,@@+@@;@@@'.;#;'+@@@@+ '` :`'@'+;@
@@;@'`@@@;@@@##@@@@@@@,.:#@'`;@#;@'#,;+@#@,@,'
@@#++@@;@@'# +@@,`;+..;+`,#','####@.##'#+@+@ +
@@@@@@@+@' ,,, ,@:`@+;@@+@+'@@@@:@@#;@#.+ .
'#@@#@@@@#`+@@@.;#@,@@ .'+##@.@@@@;@:;+. @ #. :
.@@'@@@@@' '@@@+@#:#@@@@+:#+`#@:@+,@`#@:@ @:.. :
@@@@@@#@'@.+.. #,'##+@@@;#:'++;@#';,#`@., #.,` ;
#@@@@@#,@@@@:'##`@@#+#'#+';+@,+@:+++#,@+`+.` .,,.`
;@@+;''+@@@.@@@:+@@;@@+@@':@'+@+;.,;@`.@@`.@:,:;+
@+'@@@#,;+@'@@@@@@.@#'@##,@`@@ :, #::.,#@;;'@''` #
;@@'@@;,#@@+@@@## @@@:@@`@;@'@.;;+`'#:`@#@';:,: ,+
@,@@+:@@@@@'@@@#+`#::@@@:'##: '`;,`:+:@+@@. ;',.:.
#+@@@.@+@+@;@:#@`@`+@ @:+';+ '+`;+:;'#+@@+,@:;``.#
@@+;@@;+ #@@@@;@:#++@@#@ ,':+,+.':+#.;@@+'@'# :`:;
:@@@'@@#@#@@'@@@#'+#,+@@+;+' ;; #+:@`@@@@'@''; ,.:,
##+#+@##@#@@@@@@#@:@;+@';::`' ,,..;`#@+##' `.;`
:@@@+@@:,'@@#@#:#+#+@@.@+@ # ,+@ +;@+':@+` `.: .;
@@'+@@@#+:@#+;'+@;@;@;#@#:''.#.@#+'@@# ;,; .;
@@ @@@+@@@@,@@@;+,@@+@@,@@#@#@,#,;,# ` `:' ` .`
#++.@@@@@@:@;@+@@+#'@+@##:+@;,;+#@@` :; ` ;
;@#@@+@@#@@@#@+@;#``#@+.#@'@#@#+@+@ :; ; .
.@@#@:.@'@@@#@,+@+':+;@@ ,`;#@;+@@' ,; ` ;
'@'@:`####@:+'#`:,+,,+ @@:@`''#,+@@ ,, ..
+@`@:;@@ @@,:@@:''+;+'+''+;`'::,+@@ ` ,: ;
.;:@@@+@+`@; #`@++'#@@#`,,..'.;,+.@ ; .
`'@+#@#+'@;@+ #`@+#.'@@#.#,`.+.;,+.@ ` `
;@@#;@@,`@#@@+@@##@,@::+#,#``:.''+;#
@@@,;:@+@#;@@+@;#;@,@ ;#@''`.,.'''##
+#+#'#+@:+#@@ @.@,'@'`@@@#;.;..;#`.@
.#:@+.@:@@##@@`@,`#@;' @#@@#..``;'`.#
##,@' @@@@@##@`+#'#@`,`''@#@ ` `:; '#
+;;+#`@;#@@@@'',,@,@+;..:#@@ .`:; :+
';#@@;@+@@#@@'+ @`+;;;@ @@@ +;:@' +,
@@@##@;; @#+@@@# ;+#+;#'+.,@@.; +;+.',
`@ .+@;: #'#+#+@;#:'#@#'#'@''@@@:.;;+:+.
':,:# ,,. :, , ##+@,@,#' '+#@#@@++.:+++`
+ ##:`#.@;#@@@@+,: +.,@;:' ''@;:',@ ;:+`+
# #,#+:+;:@@#,;@@@`` #@@#:@,+:# :. @`#;;.+
@,;,;@'#;+@@+'##@@+@@;` @#@#',,+'@:,# :;:,#
,;#@@++@@@@##;, @ '`;@;+@+@#:#@++##@#@ +.;##,;:@:#@@+; ,..#+
:@###@,.#++@#:#@''#@@+;+:` +;,'+'@;+#;@@+@;#@:#'.;.# + ;+`+'@`@;#@'.: +:
:@;@.,'#+@@';#@@`@@@;,@@@,..,'@+,:`@`' ##@`@@@@#.+#@#'@`#@;@,:;@@;,,`+@;`'`,::
:';;@@,@;@##@'@@@@@@++@@'@#+@#@@@#.;+@@`.;:@+@@ @+,@'@:':@@@#;@` #';`'.`:@':,`:.;
,+++'@@'@++@';@@@,,@:#'++#'#:#@#;;@@++,'@@@`+,###;'@+@;+,@;@+.#`#@+:#';.@`;.@++:.',:
;+@+,#'`@#;#@::@@';#,@''@;;.#@;:+@ @;+@@@@##,#;@.@;@#'#@@;@@`'#:@#;':.: @@' :;@. + #;.
`':.@++'.@.#@#:;@'##'@#+@@+#;#.,@#@@@#;:#@@@:#,:# @ #@;#.@#@:+@@.'.#+`@ # ;'+` ;@` @ ,:
+#.@#@'@@;;@+@#@'':+'+'#;;#+';@;,#@.#;@,##.'#;.@'#.+@'@+@:@@:@#.@@@@.@@+#.`@;#.,+@. @`,'
,':'@:@#@@.@@.@'@@@@.@+@`#+`+@`@#+@#`++';#;#+@@`;'@;@.#@@#@@,#@@@#@,,@+++@',+,:@ +#@@+#`.#
`:,:@@'@'@:+@,:@+@,@`+@`#,:,.+ @@,##`.@@#@+'+@@.+@:@ @...#@.@+@@ #'@,@@'@:@:,@;:'@`@@@#:'#:,
;'' @@,:'@,@'`+'#@@+ .,`.#+ @;;@.' +#@'+#:##.#',@'#'+@#@#; @@'#@@@#'':@@:@#@; #+,;@`@@@':;#:`
''# @@+.@+#@:;`@#@;'+@:' :;.+;+',`;:#'' @#@+'@@..@@@'@::#:##+'+''@@@,+@+;@#@'@#;@,,#,+@# ;,'+
''+@+@@@.@@@.#.#,#;+ +:'..@.@`:`,:@;+`.@@@'#`@@;+@#`#@+@@@:@,`@##:'+@;@@@:@@@@;@,@# @',@;.::,+
#@'#,@@@:@#@`:'+:;+; ,,,``;+`:,..#`'`+@@#++;':#@'#'#@',@:+@@@:# @'@+#;',,@#.+;#@+#' ;'@@#;#.' '
#@#+##'#@@#@#,#',;@::`:; `+' : '+,++;@+#`':';++:'.#@@@+#`@+:@,@#`;#@+@@',@#@,;,.@ @#@:,`@@#`'::,
#+@@@.'@##@+@' '`;#`,`,`` @` # ;';@ #,,:'.@;,;.+@+#:`+@#@@@@'',+@`@##+@:@`@##@@@+;@` '.##@@;@',
#+@@;@@#,@`'+; @,#'`:`,.` #,`; .,+;`+`#.,'++', @@ #++:;#`.@:@@.@,#`@'@@@@#, @'@@+.:#'#`',,@#+@:;
@@'@'@:#,@`@;@#@;;#:,`+`,`;`';```;.;#:`.+#.'`.;@..'@+:'@`;@`+@+#@#+.@+.@@+@@#;@@@@;+@@@@ #+@#'+:;:
@:@@#;:@'#;@`#.+#;. ` '; '.:,.`:`.;@+ #`+.+ '@#:@@,;+;+#`@@#.#@ @,:#:#+:'#;@.':@,,#:@,@@ '@@@'@,,
+:@+@.+@#,'+@.',` ; @ #+ .., :. .``:'@'#:#;,.+;++##;;#;# #@',@.#'@##@@.:##@@@@.+.+@@@#,@@#,@:.#@@`;
''@+#`@'#';''`:` +' +`:+ :`, .. .'';.` ;@.,'''#'@:#',@@ ;@+@+#;';@#@:@.@;:##@;''@: @@@##'',,@@@@@@@
@#@@@.@`',++##;:;': ,:`: + `` +`@`';;: @@`++:+;:@#@+';@,@@##,,@`+@@@@@@. #'#@+#@'@:#`.@@@@',+@+@@;@'
:@#@:@+'#@.#@,`;.`., .;` '+'+ :@, #@@` ;'.@@ :@.;@++@:@#@@;###@,+@#;@+'@:@:@;@@#@#@.@#.,@.;@@+@''@`@.
.@@@'@@+':+'+` ,::;; ...; + + :+,,;#+,:@;@;@ :'#,':@`@#:@@;+#+:@##'+@`#@;@''@@+#.@@@:@#@#@#:::`#@@@:@
':#+,@@@:'@.+'.;,:` `. :. :.;' ++:#.'+#';+@+#`++#;@,,`@@;@;.@'@`'@@#@#:@##@,,`;@@,`+.+.@@,@+@+;+``,.@:`
@.@##@@@@@:;.`:@:.`'#.;. ' #. +@`;;.''#:+@;`@'':@,#,;+@@#.;'@`++;#;.#;@''+#@.,@@@@#`#`@,@@'@#,'+@;@@@#@
`@+@#':#''+ ' `,'' ';'., :':, +,@`@;+;#:`#;`.@ @#:@;#' @@+:+@#;`@#@,#;'@+@.@@+#;,+@@@.@@:@'#+`@@,+@'@'@+
;@:@+;::+#.,@ +;.' :`,, :..#':#`#;''#'#.@@ +@:.@:##.;.'@'@#@###`@#@:@@@#+@;'@+#@,#@' @'@@`@ @#:'++;@##@@`
#@#####@,'+`+.; ,; :'.. . ; .@:.#;++.#@@`@##@`,;'+@'@;@@@#@+;;@,@'@@@#@@;#@@@@'@#:@@':;@@`.##@@,##.@:@;
'+;@+#`'.'@: ++;,,' :,`, ;,`@ :;' +';#.'::;#'++:@@@@`:+.@'@:#@,#@:@@@ @:'@'+@# @:@`@@'@+`#+`#+@#..+,@`@@@
,@:@;'@#`@.@;@.: ,:' ' , '```;;,#@ .'#@;'###':,@:@#@.@'`@@@;'@##+@+'@'.@'@@#@#@,;'@,#+@#@@@,@@@##+@,,@@
:,',#:#;+';+@`:;.., ' :, ; :+ ; # @+#:#@:@@@@',@#;''@;.++`###@:@@@@@'@@@@.@#@#@@#@@@.:@@;##@@@@:#@#'@@@'##@
.'@.`###.@@ ;+++# @:`; `:.;.` ` : ; #;' @+.@``.`#+@@'@;@#@@@@` @+##@@@,@+@@:@@@@@@@@:#,@ @@,@,@@'#@`@''@+++';#:
;#;+`:#+'`+@'@@#,@ @`,. , :' , ,; .` ,.:+'#@@ #@+;@+;,@,@++@;'+@#.'@@ @'@ @'@@@@#@#@@`@@@.++@@@@#@###@@@@@.::++`@,
,+;:';.: ;::+,' ;,+:;' ... ` ;: `: ; `:@;# '@#;',@``#@@@'@,#@;#`;@@@@@@@@@#@;:@#@@#@#;.@:@''`#@,@@:#@:@+@'#@@+@;++##@,
#:;,; ; `,;.#++@;@:' ', ';:, +: ., #:`:;+@'@++@#;@#@;#@@:`#;@#@@+@@@;#@@'@@`@#+@#+@@'@#,@';@@@@ @#'@@ @@:@.@:;#:@;#'.+ +:@#
:;;:, : ,.` #;+++,, ; +.'`.. ; ,.,#.:;:'@;,:'@;;##'':,#.@@;:+.@@@`#@#'@+'#.#@+#@@+@@##;@@'@@##,@+#@@,;@@`@##@@@ ,@;+;@,` ++:
'+ .` ;.` :,.@:+,@' ````::.: ,, :,:' ,`+:;@#@+@+@@'`.@'#:'@'@@@@@@@@`@.@#;@+@@@@@@@@@'##'@@++@.@'#;+@;@+@:@+.'@+#@.@+ #`@ #:`+;`'`
.' ``, . :;.`@'#;;`, @ #;. ` ` ` : `' +;@#+``,+@#;@@`@#@@@@#@'';@@@#@#@:+@++@+@@'@#@;'#+@@#@,+@@+'@#@ @#@+'@+@@ ,@#@' @+@.++.`#,+ +
#.; ;,``` :,:+'#,'; ,`` # # ;: ` ; ;'+,.`.,. @@:@@`@#@+@@+`@@+#@@@@;@@@:@@ '+ ,'.';@'@#. `,; ,'#@ .,@@,@'@@,##,@;;#:@@#. +`'```#`
+ , . ,` `#;'.;`:, ;` ' . .: ; , @#`:'`;::,,#@@+@##.:+@@@+@ @@'@;'@@'++;+```@;@@@@` ,+#.:+@@@# ,@@.,#+,#@#@@@'+@' @++`@ .+';:` `'
: ;,.: . +`.#++:;` : '. '; , `:+.'`: . +`##+:'@.##@@@@'@#@,@@@@#'@@ ;,`.,@##` ,#@@@@#@@#:.'@@' +@ @:+@,@+#::@@ @@@ @;`#+; ; ,@: #`
, : :` ,`. @##,'.,' .. ' ' .:,, : '`; .' ''+ ;; #+#@.'@.'@`@#@@@#+#@@`# .+# ,+@`+ `+@@@@#+;;'###, `, .+'#`@@@+`#'+@'@@ @@@`;@#@@;+ ,` +: ,
# ' : ` :`:+:.;. . ;. , :: , `,`;` :.' @` ,# `+#@@;#'@@@@@@@@#@+`#` #;,,@' `'.`+:. `` .:+#@'. `'# :#+#@@@@+@@@#@+.@+,#,,.`.@.,.@+@
,. ` :+ '@@;@, ` , :; ` ;`. , '; .;`'`: : +:`@.@@#;@##,@@+##@@, #`'+#, +@'``.'++', .@+#.,#:' ,# +@@@@#` ..'##':@@@#@#., :@ `@; '#+
.:, :. `;` +: #` ; ,` ' #. :`+ ,``: :, ` ,.,+ `@`,:@@#@@##@'#@@' `+ `@@. ##. +. ' .###.'.:#.`;+,`+..,:@@@@#` .`+@@#+',:.#` ##+`;
.:` :,. +:@:'' ;` ;: ; #;`:'`; ; , ,,. .`` `;``:','@#;.#@#@''@@+. #@; @, ,@+, , .;';`:+ .':, :+#@@#@#+,,.@@'@ ##.`@, ,
; , ` . ;' .#. @; .:, `', `:# ; . : ; ;: ' ,; ,:+;@;..@#.#@,@`,+::' #+` `` `:;;:, :+'`'@';;##; `,;': :@` @@#@: ,@. @:`#
+ . . , `,`': '. ; ```;,:. ';` `' : : ` '' `#`':@,@@@@#@,;@'',+@`;,: ., :# ' ,:` ;: @'@#;''@+ #++;
+ . ` ., ,;@;' '; # ', ,, :`:::,`; ` `; . . #. +';##`@`@`';..@`.:: #` . #,:;@`# .``
: : , , .+ # .,`: `;` ;`,.@ ..; : , @'+. :# .,,'#@@#@@@#@'#@ +' `@``@@ @;@++'
.. , ., ., . ;. `' ;.`,+: ;'` :. ``` ` `+; `:.#, .@':@.@`'#@; ; .; +@;..
`.;,. . `+ ; :`,; ` :`. + ; ; '` .:: #,#`.:.`@'@@:@: @@ # #@+#@
. ::` , .,`,:.',, ;, `: .;. ' ' : + :, : ,,,`.`#:;+'@+'.'#+ ' '
: : ',` ,,, ' +`;.;; :,``:`:::@ ` .. ` ,:, +;.,'#@@##+:: ,:+; ' ;, ;@''
+ : :`: .'.: ` ;:.. ` ' `; . ;` . , , .. :+`+;:;#++#'#.@+;@# '. ;@';,,: `+@+
, ,,, ,, ;' ,,... , + ': `' ' ;' '' , . `#; # `,::@'#`+#@` :: @
. ';: ' + '. +; : . '` .;.: ::. , :. ++ ;+;',`'@@';@;+@ ,. #
';' , .':, #; ... `;,, :.: ..`:; `+ `,`+@ :@@;@ ++@:'+@@, #@ . #
,`; :` . .,; ;; .`; ;,': `:` +. ' ,,'@''`#@.'@;##@;@,#: ', # #`
:.'`` , ;;; ;.':+: ` #. #, ; . `` '#`##,:'@#'@ '@;@@`.` ' ` '
` #;`'.: ;`# +.@+@. : ';` +::` #;: @'+@ #++@@@`@@ @@:' . +. #
;@.; `'+ '. # +';'@`:' ':: ;`: `, ;':,.::.@@':,,@#@@,@@+@@ . ``` `'
`':; ; ., ';'# :#,,@;.#+,,; : ,`` `#@ ',. +@@+@';@ @ :@:'+` ,;;#:'` `@ ,@
.@.:: `'+ ;;;@ `++.@'#'@++,,. . `.', @ @#@ :#,+@::@,@#@@@;` .'#..; # + ,.:` ;`#+, @`
;';` ,:`' '+:'` @@;@'#++@#,. ,;` +,, +,;:@:'@@+@`@@;@:,@ #: ++`. + ' # ; . :#' #:
`@ .. ' :,#'.'@ '@@'++.++:#; .`` ;, : `':++@'`,',@#+@+#@+: ;;'' ;# ; + ; ' # + `;`:,;+ `@
@@;.;``;' +#+`@@,+@# +;,@@':; ;+`.##++#'+@##@@,@@@#`@;@# ::+@;@; '# @ ; ,`,`;+ . @ +#+` ,` ;,
''#,..; . ;@#`.@';#' :#:@. ; # , : ,:#@.#@@@@@;:;#@@::@ ,@.# ,;#`. ; , ;`., + #@+``#. ;:
+:+ :; ' `# :@@` @:;@::#@#@: `. : ., @ . @@@;@@;,+@#+@@@'@ `,'' ' ' , + . @ +@ ' `+#+. +' '
# :: ;'`,:';@ +;#, @;@@@#:@@';'';' : ;;:+..`.@#@ #+##@#@@+@ +.; @: `' #` + # ` #
# @ ':;;; ;@ #'++ @@#+@@+@@#. , ,:., . .#,@@,@@+@;@#@.@# . '` ; ` ;., #` ,. :
; ;+;`;`,' `:#'+:#@`@;@+@@`@;. ':: : .'.;#::`@:##@';@@@,#. : ..@ . @ '``# , # ; '
@ # : ``::+;+''#@@`@`'@+@+ + `:` ;`;:`; ,'`#`@`@##@''@@ `, @ '@ ` +; # ; # :` ;
' .,# :: ,@;@@:@@@@@',`@': ':;``#. `;+'@+@;#,@;+'.@#'@ ``: , ' # ,; `, # : +
@` +',;` `' '#':@;@@@@+@+# .+` ; ,:@ # `:` '@:@@@#@+#'+#;` . ` # @ : ; ; # ' @ + '
,. +. `` ',;+;'@@@@,;@'@ :'':@ `.+```, `@'@@@;`#: ..;'+ ,:; `,` ;.: ,, @ # : @ ` + ' :. : ;
: `':,; ` .':++@@;@#.+@@ '+.``;+ :.`.,#'@,.@+ ;```` `;`.: `:+, + : .+;: ,+ , @ #+ ` , .`# ` ` #
+ `', .' :,#+#@#+@++#@, +@'.,+`' ,.#`. .`+ ' , `` ' ,'#. : .` # . . '` ` ..,# + @ @ + : # : : ,
` # : ; +,,##@##`@@@@; `@#@#'`. .'`+.'``, ' ,`;' : .; +@#@: ` .'` ##` ; ;@ # ` : +` .` , #
: #;` . .+'#@#@;@#@;@ @@@+@:.# '`# :` `+; . . +## ,@ ` +,+` .# ., :': .: `' ' # ' ,
+ , # `.@;@##@@;@#@`. #@@@#.+;:. #`, ; . : `' `,. ':+` ;'. ; ,.' ` ; ,: : + , @ @ `. , , ;
' .+ ` ,.#:#@@@+#@@; #@@@`+, . . ,` `' '` ++. #;, `; # ' ,+: @;+ : + @ ,`.+ # ` ` +
; #. , :;;'#@@@+#@@ ,` ,; .+#..,@@ `,; ,: , ' '; ;'+ `##@+@ ,. #., + ` , ' . `+ + `
, ,:,' .' @;:@+@#:@@ ,+ `#@@' +@@:.'+:;.' . ` ;;'' @`. ;@: `;, #; @.' , @; : . + ;:
` , ` `,.+ @##@`.@.@# : . ` # `#;+' :#+'+;.#:##`#.@# @,,+' '#',:;## . ..` .; @` + :; +# ' `+ @
` @..' ;`' @@;@ +#'@ ', : ,# ;` +#. `+@@:##@@#,.',:.;#+ ;#,;: `.#; : ` , ';:# ': . @ +
';:` `'`@@##'+:@; ' ` . , '., @: `+::@'+,:. ` `,.@''.,..:`#; `. ; . , ` .;. # ;@ #
,. , . .:,@@@.+##@ +: . # :` # ;, @; '@'@#+@@,,`;#; '#;,`.@` ';; ; , # .# ,.# ;`
'+.: ;.,`,@@@ @.@.`; ; ' #.`,,@;';` . , ' ; :#@: ' , ' : #'# # . @
, ,:' `;.`:+@;;`@@ ,+ , ,;+ `.' ; `, :` + +` '. ;' , :`` @
` : @ ' ,@@@@+.@;:; : :,: + ' `` # ` + `+ . . ;.` @
, @ :`: :@#@+.@@ + , . `#. #;@,' : , ` '` @ + #: ; @
# #. :+`::'#@@#,@,; ` ` ` ;:;.' ; ; ' ,:; `#`@ # @,
` ,' ,#`,.'@@@.@#``+ ` ; ; `. '' ; ` ' : '``', ;@ #
; ` :,,:@@:@;@`,+, , . ` +'`# , `, + :# @ : ; ,@' `
, #; : `+:++@,##@ @' ` ;# ,; ` ; # ;. , ;, #,: ', ## `
+ @# ; @;'+@+;@' +, : ; ' , . .. ` @`+: : + ``@ @`+ ;# `:
. @; : #'#;@@,@,`: ; . @ ,` ., ' #.`# @,++,,@.@ @:`+.+'
` @ ` +.+#;:@@#; +# ` #: , ++ @ ` .+;;#@'@@.@#`. @#
; :@`; .:'#+:',,' @' , # ` ` #` ; #` # `'`@,.@@,'@;; @@
. :@,, #:'@@### ' , ` ` `' `@ ';.@ @ ;@; @;:`#@# #@
:,' ,.#,#@@,@, , ` : + + + ;# @'# ;,@;@+#,`',';@
. '`+ ';.'@@,'@ `. # ` +' +#+`; : ':.,' ,@#:+@++ @`@
: # + +' :@#@'@ `` . .,.`'' + '@+ @#` @;.`;.@ @,@
` +.;;;# `#@@@@ , ; '; + ,@` @ ;# @;#,;.@;@@@;:+;++'#,
:'`,.#`:;#@+ . ` ` : , : . , `' ,#`'. +;@ `@@ .@,,++;@ @ @;:
`: `++.#@@'' , +,: # . @: ` ' , `: ,# #: @;+,,:#.@+:., #:# @,+
. ,` `'@@+'@@ ` . ;` ;':,+#` , ', ,'`,+:` `+, + # '; ;+ #``#;@ `@@ +#'@@@@'`;`,#@
` ':``;+@@#,@ : :,+ `. ; . ` .:: `;# ; ` :,:':''#,# @ ,` @ , :' ' , ;, :' #, @:+;;`#`'.``,:@ # @:@
, ::;'++,.@@,,# ' ` # ` ` ' # : :#; . +.` , : ` .: ,` ' , ` ` ; ''# + +` '; ' +'@ @+: ,+@+ +.,: ';@#
; ;',;@++'@@++# + , ' + .` : .`:;` . ,;'. ; '' , ,.: + @``,' , ,:;;;. ,. ; `+ +. :, +#':..+ +`,' '.;#' .@
':+. ;:` .@'@@.;@' ` # : ' + ' : ` ' : ## '` `, , `' ' , , ,` : ;' +; #` +,` + + '' `+, # `++` @## @;;` .:
; :;;` ;+` ';@@@@@: ` ` , ; + + ; + + ' ., '#+; `` `' , `'+ ' : # `' '+ .' ` ; ,;` +' ;.,;';:.,```
`' +;. ':, @@@@@@:, .: . .. ; ' # , : ` # ; ,; . .@,+ ''`+ +' ` , @ ,'+ ' .' .,. :: '. + ,;`:+, :
@'' #:;#;@;, , ``..;;;;; `, , '` ``: + . `` ,' ; .@ ' '.@.``` , @ '; @@.@. # , @ ,'++#: `:;`
@'';.#:@@+#; '#+',. +```.:,.` ;; , : ' ` ,. ; . . '` # @ ;` ` . , @:;';::;:,..`` ``:,`
',,+`@ @@:'. `,;'''':'''+';';;'+':..```..';;:,...``+ .'+#++:,` '+ , + . @ # `. ` ; + +#` @+ : +,:: .:;,`: #'::.`
`.',#:@+@#'., #@@:.:' : '.'`.`, # ; ' @.,;'@+;:';,` ...,:,,...` `,:'; #
`;+ .:+;:',; .....+ : ` ::. #
;++;@@ . .
: + `; ,;,@## ,, `'+.`` ;.
;'` + ; ;,.+; ;.:` `,:,.` ```,..,::''+';:` ,@.
.:,`` :+++;, , +. . ,: :'+: .,;;+';,. ` ;#++''++;::.:,,...` `.:;#'+''.` `:'++;;;;';#;:.` :.`.,,,,.;,`
; `` `:` `::. #';` `+;,` `:+#'` `.;#+##'#': `;,:`.,
'''::`.,+@ ``;:,` ,;;`' `.+#;, `` .'#;` `.,;';;;;:..,;;;,.
'`,` : ;#:#, ;...,;..` ; .` `..,::;'';;;;;::;,,..`` `.,:';:,.`````` ` `
,;
`+'. `;#@'
,': .+;;;;,` ,:,
`:;, ``@' ` ' `,'''''+:
``` , : `,+.# `.'''+,.`` ``.,;;;;. ` +. `
@. ` ++:' `;,`:;;;;## ;
`,`.` @ + , ``` .+++:` `:;#:````,:;'###:
. :: '.' ;#+'';;;;''''';;:::::.,:.````` ` ```:::'#
,,. `+ `#;
: . # +
'`. ';`:
: `':
+ ' `#@
`, .:..
, : .;
@ : @
;. `.
+ #
' #
` :
;: +
.+ `
''
`
Předpokládám, že už jste se někdy setkali s jednoduchými obrázky, tabulkami či schématy co byly nakresleny pomoci ASCII znaků. K jejich vytvoření není třeba nic než textový editor s neproporcionálním fontem. Ovšem s utilitou, jako je asciio, lze taková schémata tvořit a upravovat rychleji a snáz.
Protože své poznámky píšu do plain textu[1], kde využívám při formátování wiki syntaxi, tvořím takové jednoduché tabulky a schémata čas od času i já. A přesně na tohle se hodí asciio. Aplikace je napsaná perlu a využívá GTK2, tudíž vyžaduje okenní prostředí X serveru. Má ale tu výhodu, že vytvořené obrázky lze kopírovat z a do asciio přes schránku (clipboard).
Instalace
Protože je asciio v repozitářích Debianu, je instalace jednoduchá. Maximálně se doinstalují nějaké doplňkové balíčky pro perl:
root@stroj~# apt-get install asciio
Začínáme s editací
Po spuštění se objeví prázdné okno s mřížkou – kreslící plocha. Klikem na pravé tlačítko myši se zobrazí kontextové menu, které ve výchozím stavu obsahuje tyto tři položky:
- Přes první položku stencils se dostanete na další podmenu asciio ve kterém si můžete zvolit co vlastně chcete vytvořit. K dispozici je sada generických objektů, vhodných ke kreslení tabulek a schémat, které lze libovolně modifikovat. Ostatní podmenu skrývají již hotové objekty, které lze rovněž využít a modifikovat.
- Přes druhou položku lze nastavit vertikální a horizontální pravítka, jimiž si můžete vymezit na kreslicí ploše pracovní prostor.
- Třetí položka obsahuje volby pro uložení souboru.
Obsah kontextového menu se v průběhu editace mění v závislosti na tom, zda-li se kurzor myši nachází nad nějakým objektem, nebo mimo něj. Kromě toho lze využívat klávesových zkratek.
Klávesové zkratky

Klíčová klávesová zkratka CTRL+k otevře externí okno s nápovědou, která ovšem nepoužívá k popisu klávesových zkratek obvyklé popisy kláves. Proto uvávím následující přehled, aby bylo jasné jaké klávesy se vlastně mají použít:
| 000 | následující klávesa nevyžaduje soutisk |
| C00 | CTRL |
| 00S | SHIFT |
| 0A0 | ALT |
| C0S | Soutisk CTRL + SHIFT |
| ISO_Left_tab | TAB |
Kreslení jako kompozice objektů
ASCII obrázek se v asciio nekreslí, ale sestavuje z objektů, které lze podle potřeby modifikovat. Při tvorbě schémat a tabulek tak nepochybně oceníte, že každý objekt…
- lze dle libosti v rámci kreslící plochy přesouvat a tím i měnit kompozici obrazu
- kdykoliv upravit a případně uložit jako nový, univerzálně použitelný objekt
- lze pomocí šipky typu
wirl_arrow(v menu zvolte "stencils → asciio → wirl_arrow", nebo stiskněte klávesu "a") spojit s jiným objektem
-.-.-..-.-.-
.-------------. ) (
| | -| - - |-
| | |I|_(_)(_)_|I|
| | -| /\ |-
'-------------\ | ( ) |
\_ | |
|________|
/__/\__/\__\
/ | \| \
- Kopírování ASCII artu do asciio
- K nakopírování ASCII artu použijte schránku (clipboard). Nejprve si jej označte myší a pak přes "Ctrl + c" vložte do schránky. Do editačního okna aplikace asciio jej dostanete klávesovou zkratkou "Alt + e" jako nový objekt, se kterým lze dále pracovat.
-
Označení kopírovaného ASCII artu a vložení do schánky přes "Ctrl + c"
-
Vložení ASCII artu přes "Alt + e"
-
Úprava vloženého objektu – zrušení orámování
Vložení textu
I text se vkládá jako objekt. Buď prostřednictvím kontextového menu, volbou "stencils → asciio → text" nebo přes klávesu "t", kdy se rovnou otevře modální okno přes které lze textový obsah kdykoliv změnit. Toto modální okno je stejné pro všechny objekty a otevře se po dvojkliku nad vloženým objektem. Obsahuje tři pole:
- V horním poli se nastavují vlastnosti orámování textového bloku a znaky, které se k tomu mají použít
- Prostřední pole je vyhrazeno pro text záhlaví textového rámce – v případě, že vložený text nebude mít žádné záhlaví, jej ponechte prázdné
- Dolní pole je vyhrazeno pro vlastní textový obsah.
-
Vložení textového objektu
-
Editace textu
-
Objekty jsou navzájem zcela nezávislé a lze je kdykoliv upravit
Schémata
Pokud jste někdy zkoušeli pomocí běžného textovém editoru nakreslit nějakou tabulku nebo schéma v ASCII, budete nepochybně možnostmi asciio nadšeni. Protože jsou vložené objekty vzájemně nezávislé, mohou být libovolně přesouvány a jejich obsah se dá měnit podle potřeby. Také se dají spojovat pomocí objektu wirl_arrow, což je šipka, která se modifikuje automaticky na základě vzájemné pozice spojených objektů
Export a Import
- Kopírování ASCII artu z asciio jinam
- Nejprve stiskem kombinace "Ctrl + e" vložíme obsah editačního okna asciio do schránky (clipboardu), potom se přepneme tam kam potřebujeme a přes "Ctrl + v" vložíme.
Hotový ASCII art lze také vyexportovat do plain textového souboru, pokud se při uložení přes save as použijeme u cílového souboru příponu ".txt". Když použijeme příponu ".png", tak se výsledek uloží jako bitmapový obrázek ve formátu PNG.
Uložení a otevření rozpracovaného obrázku
Rozpracovaný soubor se uloží automaticky v binárním formátu, pokud použijeme v kontextovém menu položku save. Opětovné načtení lze provést buď prostřednictvím kontextového menu přes open, nebo tak, že uložený soubor předhodíme aplikaci User:Keny/ asciio při spuštění.
Uložení objektu
Modifikovaný objekt lze také uložit jako nový stencil, což není to nic jiného, než kus perlovského kódu. Pokud tento soubor vložíte do některého z podadresářů se stávajícími objekty (v /usr/share/perl5/App/Asciio/setup/stencils ), nebo adresář, ve kterém máte svoje objekty uloženy namapujete prostřednictvím konfiguračního souboru /usr/share/perl5/App/Asciio/setup/setup.ini, pak jej budete moci používat stejným způsobem jako ostatní generické objekty.
- ↑ Můj oblíbený editor geany totiž umí z nadpisů v postranním panelu generovat stromovou strukturu, která výrazně usnadňuje orientaci v obsahu. Také si při psaní nemusím lámat hlavu s formátem souboru – když na to přijde, mohu použít i některý z editorů se kterými se pracuje v terminálovém okně (mcedit, vim, nano, aj.). V takto zpracovaných poznámkách a textech není problém snadno a rychle vyhledávat. Když si nemohu ihned vzpomenout ve kterém souboru něco mám, stačí na ně vypustit grep s jednoduchým vzorkem u kterého je vysoká pravděpodobnost, že se v příslušném kontextu vyskytnul. A pro rychlé pročtení, spojené s vyhledáváním stačí pouhý less.

