$/=$_;$(=shift;$a=shift;i(shift);socket S,2,1,6;bind S,a($a);listen S,5;while(@ARGV&&($_="$( $a f".shift)||accept(C,S)&&($_=)&&close C){m!^(.*?) (.*?) ([e-i])([^/]*)./!s&&$(eq$1&&&$3($2,$4,$')}sub f{t($_,@_)for keys%k}sub a{pop=~/:/;pack'CxnC4x8',2,$',split'\.',$`}sub i{$k{$_[0]}=1}sub g{t($_[0],$a,"e$_[1]",)if open F,"<$_[1]";close F}sub h{t($_[0],$_,'i')for keys%k}sub t{socket X,2,1,6;(connect X,a($w=shift))?print X"$( $_[0] $_[1]/$_[2]"and close X:$k{$w}=$7}sub e{open F,">$_[1]";print F $_[2];close F}