gawk '

function flush () { system("/bin/true"); }

BEGIN {  print "\
%form top topLevel \n\
%asciiText input top editType edit width 200 \n\
%action input override {<Key>Return: exec(echo [gV input string])} \n\
%label result top label {} width 200 fromVert input \n\
%command quit top fromVert result \n\
%callback quit callback exec quit \n\
%label info top fromVert result fromHoriz quit label {} borderWidth 0 width 150 \n\
%realize\n" ; flush();
}

$1 ~ /^[0-9]+$/ {
		print "%sV info label {thinking ...}" ; flush();
		starttime = systime();
		result = ""; 
		number = $1;
		for (d=2; d <= number; ) {
			if ( number % d == 0 ) {
				if (result == "") result = d;
				else result = d "*" result;
				number = number / d;
			} else {
				d++;
			}
		}
		print "%sV result label {" result "}" ; 
		print "%sV info label {" systime()-starttime " seconds}" ; flush();
	}

$1 !~ /^[0-9]+$/ {
		print "%sV info label {invalid input}"; flush();
       }
