#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local args cur prev opts

	argc=${COMP_CWORD};
	cur="${COMP_WORDS[argc]}"
	prev="${COMP_WORDS[argc-1]}"
	local help="_command .";
	local add="value [indice] filename \'formula\' (noargs)";
	local sub="value [indice] filename \'formula\' (noargs)";
	local mul="value [indice] filename \'formula\' (noargs)";
	local mmul="value [indice] filename \'formula\' (noargs)";
	local div="value [indice] filename \'formula\' (noargs)";
	local pow="value [indice] filename \'formula\' (noargs)";
	local min="value [indice] filename \'formula\' (noargs)";
	local max="value [indice] filename \'formula\' (noargs)";
	local mod="value [indice] filename \'formula\' (noargs)";
	local and="value [indice] filename \'formula\' (noargs)";
	local or="value [indice] filename \'formula\' (noargs)";
	local xor="value [indice] filename \'formula\' (noargs)";
	local bsl="value [indice] filename \'formula\' (noargs)";
	local bsr="value [indice] filename \'formula\' (noargs)";
	local rol="value [indice] filename \'formula\' (noargs)";
	local ror="value [indice] filename \'formula\' (noargs)";
	local atan2="[indice] .";
	local set="value,_x,_y,_z,_c .";
	local fill="value1,_value2,.. [indice] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[indice0]},{value1[%]|[indice1]} [indice] (noargs)";
	local normalize="{value0[%]|[indice0]},{value1[%]|[indice1]}[indice] .";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0,_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="value0,value1 .";
	local map="[indice] predefined_palette";
	local index="{[indice]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[indice],_interpolation,_borders,_cx,_cy,_cz,_cc {[indice_w]|width>0[%]},_{[indice_h]|height>0[%]},_{[indice_d]|depth>0[%]},_{[indice_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[indice0]|c0[%]},_{[indice1]|c1[%]} .";
	local slices="{[indice0]|z0[%]},_{[indice1]|z1[%]} .";
	local lines="{[indice0]|y0[%]},_{[indice1]|y1[%]} .";
	local columns="{[indice0]|x0[%]},_{[indice1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[indice] .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[indice],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [indice],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [indice],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[indice],_borders .";
	local correlate="[indice],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [indice],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [indice],_borders";
	local inpaint="[indice] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[indice],_fill_lines={0|1} .";
	local displacement="[indice],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} ";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_color1,.. .";
	local spline="x0,y0,u0,v0,x1,y1,u1,v1,_opacity,_color1,.. .";
	local ellipse="x[%],y[%],r[%],R[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[indice],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_color1,.. .";
	local quiver="[indice],_sampling>0,_factor,_is_arrow={0|1},_opacity,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[indice],_x[%],_y[%],_z[%],_c[%],_opacity,_[indice_mask] .";
	local object3d="[indice],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [indice] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [indice3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [indice] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value11,..,value12 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [indice] (noargs)";
	local skip="item .";
	local exec="command .";
	local while="condition .";
	local repeat="nb_iterations .";
	local if="condition .";
	local elif="condition .";
	local check="expression .";
	local push="item .";
	local pushr="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [indice]x_nb_copies>0 {width>0[%]|[indice_w]},{_height>0[%]|[indice_h]},{_depth>0[%]|[indice_d]},{_spectrum>0[%]|[indice_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0,x1,y,z,v y0,y1,z,v z0,z1,v v0,v1 (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width>=-1,_height>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local r3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local pr="eq.to\'-pushr\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local strcmp="string1,string2 .";
	local apply_pose3d="p1,..,p12 .";
	local push_filename="\"filename\",_number1,_number2 .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local drgba="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local blur_x="_amplitude,_borders={0|1} .";
	local blur_y="_amplitude,_borders={0|1} .";
	local blur_z="_amplitude,_borders={0|1} .";
	local blur_angular="_amplitude,_cx,_cy .";
	local blur_radial="_amplitude,_cx,_cy .";
	local blur_linear="_amplitude1,_amplitude2,_angle=0,_borders={0|1} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local split_freq="smoothness>0[%] .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local richardson_lucy="amplitude>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local lic="_amplitude>0,_channels>0 .";
	local apply_gamma="gamma .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0,1,2} .";
	local expand_y="size_y>=0,borders={0,1,2} .";
	local expand_z="size_z>=0,borders={0,1,2} .";
	local expand_xy="size>=0,borders={0,1,2} .";
	local expand_xyz="size>=0,borders={0,1,2} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x>=0,_size_y>=0,_R,_G,_B,_A .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_R,_G,_B,_A .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0,1,2} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0,1,2} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0,1,2} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0,1,2} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0,1,2} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0,1,2} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0,1,2} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local mosaic_texture="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive,1=G,2=GA,3=RGB,4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="\"(a00,...,aMN)\" .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="smoothness=0.8 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local animate="filter_name,(params_start;..;..),(params_end;..;..),nb_frames>=0,_output_frames={0|1},_filename .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local text3d="\"text\",_font_height>0,_depth>0,_smoothness .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -cos --cos -sin --sin -sinc --sinc 
		-tan --tan -cosh --cosh -sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan 
		--atan -atan2 --atan2 -abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp 
		-log --log -log10 --log10 -endian --endian -set --set -fill --fill -threshold --threshold 
		-cut --cut -normalize --normalize -round --round -equalize --equalize -quantize --quantize 
		-noise --noise -rand --rand -norm --norm -orientation --orientation -map --map -index 
		--index -rgb2hsv --rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv 
		-rgb2ycbcr --rgb2ycbcr -rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk 
		--rgb2cmyk -hsv2rgb --hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb 
		-ycbcr2rgb --ycbcr2rgb -xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb 
		--cmyk2rgb -resize --resize -resize2x --resize2x -resize3x --resize3x -crop --crop 
		-autocrop --autocrop -channels --channels -slices --slices -lines --lines -columns 
		--columns -rotate --rotate -mirror --mirror -shift --shift -transpose --transpose 
		-invert --invert -solve --solve -eigen --eigen -permute --permute -unroll --unroll 
		-split --split -append --append -warp --warp -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -quiver --quiver -flood --flood -image --image -object3d 
		--object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove -keep --keep 
		-move --move -reverse --reverse -name --name -point3d --point3d -line3d --line3d 
		-triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d -box3d --box3d 
		-cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d --plane3d -sphere3d 
		--sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d --isosurface3d 
		-streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d -div3d --div3d 
		-center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d -color3d --color3d 
		-opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d -split3d 
		--split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d --specl3d 
		-specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d -background3d 
		--background3d -skip --skip -return --return -exec --exec -do --do -while --while 
		-repeat --repeat -done --done -break --break -continue --continue -if --if -elif 
		--elif -else --else -endif --endif -local --local -endlocal --endlocal -check --check 
		-quit --quit -push --push -pushr --pushr -pop --pop -error --error -1 --1 -input 
		--input -output --output -verbose --verbose -print --print -echo --echo -warning 
		--warning -command --command -type --type -shell --shell -shared --shared -display 
		--display -display3d --display3d -plot --plot -window --window -wait --wait -select 
		--select -h --h -f --f -t --t -c --c -n --n -r --r -s --s -a --a -rm --rm 
		-k --k -mv --mv -c3d --c3d -n3d --n3d -rot3d --rot3d -col3d --col3d -o3d --o3d 
		-r3d --r3d -p3d --p3d -s3d --s3d -l3d --l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d 
		-db3d --db3d -m3d --m3d -md3d --md3d -b3d --b3d -x --x -b --b -l --l -endl --endl 
		-q --q -p --p -pr --pr -pp --pp -e --e -i --i -o --o -v --v -m --m -d --d 
		-d3d --d3d -w --w -ow --ow -outputw --outputw -op --op -outputp --outputp -on 
		--on -outputn --outputn -d0 --d0 -display0 --display0 -split_tiles --split_tiles -append_tiles 
		--append_tiles -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify 
		-strcmp --strcmp -apply_pose3d --apply_pose3d -push_filename --push_filename -push_maxsize 
		--push_maxsize -push_minsize --push_minsize -histogram_cumul --histogram_cumul -direction2rgb 
		--direction2rgb -vector2tensor --vector2tensor -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-dfft --dfft -display_fft --display_fft -drgba --drgba -display_rgba --display_rgba 
		-drgba --drgba -display_histogram --display_histogram -gradient_norm --gradient_norm 
		-gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb -laplacian --laplacian 
		-gradient_derivative2 --gradient_derivative2 -curvature --curvature -edges --edges -isophotes 
		--isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-blur_x --blur_x -blur_y --blur_y -blur_z --blur_z -blur_angular --blur_angular -blur_radial 
		--blur_radial -blur_linear --blur_linear -dog --dog -split_freq --split_freq -compose_freq 
		--compose_freq -normalize_local --normalize_local -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass 
		--bandpass -rgb2bayer --rgb2bayer -bayer2rgb --bayer2rgb -pde_flow --pde_flow -heat_flow 
		--heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -richardson_lucy --richardson_lucy -remove_hotpixels --remove_hotpixels 
		-lic --lic -complex2polar --complex2polar -polar2complex --polar2complex -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -negative 
		--negative -tones --tones -t2 --t2 -threshold2 --threshold2 -r2dx --r2dx -resize2dx 
		--resize2dx -r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy 
		-r3dy --r3dy -resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart 
		--upscale_smart -expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy 
		--expand_xy -expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z 
		--shrink_z -shrink_xy --shrink_xy -elevate --elevate -array --array -array_fade --array_fade 
		-array_mirror --array_mirror -array_random --array_random -array_pattern --array_pattern 
		-taquin --taquin -grid --grid -frame --frame -frame_fuzzy --frame_fuzzy -frame_round 
		--frame_round -rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles 
		--linearize_tiles -quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow 
		--drop_shadow -tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge 
		-hearts --hearts -color_ellipses --color_ellipses -whirls --whirls -cartoon --cartoon 
		-drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw --stencilbw 
		-pencilbw --pencilbw -ditheredbw --ditheredbw -dotsbw --dotsbw -warhol --warhol -cubism 
		--cubism -glow --glow -old_photo --old_photo -euclidean2polar --euclidean2polar -warp_perspective 
		--warp_perspective -polar2euclidean --polar2euclidean -water --water -wave --wave -twirl 
		--twirl -map_sphere --map_sphere -flower --flower -zoom --zoom -deform --deform -fish_eye 
		--fish_eye -transform_polar --transform_polar -kaleidoscope --kaleidoscope -spread --spread 
		-shade_stripes --shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch 
		--light_patch -light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize 
		-paper_texture --paper_texture -mosaic_texture --mosaic_texture -apply_channels --apply_channels 
		-to_gray --to_gray -to_graya --to_graya -to_rgb --to_rgb -to_rgba --to_rgba -to_colormode 
		--to_colormode -remove_opacity --remove_opacity -select_color --select_color -replace_color 
		--replace_color -fill_color --fill_color -luminance --luminance -mix_rgb --mix_rgb -mix_channels 
		--mix_channels -solarize --solarize -sepia --sepia -split_opacity --split_opacity -red_eye 
		--red_eye -fade_x --fade_x -fade_y --fade_y -fade_z --fade_z -fade_radial --fade_radial 
		-fade_diamond --fade_diamond -fade_linear --fade_linear -compose_rgba --compose_rgba 
		-compose_average --compose_average -compose_multiply --compose_multiply -compose_screen 
		--compose_screen -compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -animate3d 
		--animate3d -imagecube3d --imagecube3d -imagepyramid3d --imagepyramid3d -text3d --text3d 
		-gmic3d --gmic3d -snapshot3d --snapshot3d -x_mandelbrot --x_mandelbrot -x_fish_eye --x_fish_eye 
		-x_spline --x_spline -x_tictactoe --x_tictactoe -x_fourier --x_fourier -x_life --x_life 
		-x_fire --x_fire ÿ";

	if [[ "${cur}" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- $cur ))
		return 0
	fi

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help" -- ${cur}))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add" -- ${cur}))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub" -- ${cur}))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul" -- ${cur}))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul" -- ${cur}))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div" -- ${cur}))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow" -- ${cur}))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min" -- ${cur}))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max" -- ${cur}))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod" -- ${cur}))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and" -- ${cur}))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or" -- ${cur}))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor" -- ${cur}))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl" -- ${cur}))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr" -- ${cur}))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol" -- ${cur}))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror" -- ${cur}))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2" -- ${cur}))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set" -- ${cur}))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill" -- ${cur}))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold" -- ${cur}))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut" -- ${cur}))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize" -- ${cur}))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round" -- ${cur}))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize" -- ${cur}))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize" -- ${cur}))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise" -- ${cur}))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand" -- ${cur}))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map" -- ${cur}))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index" -- ${cur}))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize" -- ${cur}))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop" -- ${cur}))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop" -- ${cur}))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels" -- ${cur}))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices" -- ${cur}))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines" -- ${cur}))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns" -- ${cur}))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate" -- ${cur}))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror" -- ${cur}))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift" -- ${cur}))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve" -- ${cur}))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute" -- ${cur}))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll" -- ${cur}))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split" -- ${cur}))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append" -- ${cur}))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp" -- ${cur}))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur" -- ${cur}))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral" -- ${cur}))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise" -- ${cur}))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth" -- ${cur}))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median" -- ${cur}))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen" -- ${cur}))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve" -- ${cur}))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate" -- ${cur}))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode" -- ${cur}))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate" -- ${cur}))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint" -- ${cur}))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient" -- ${cur}))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors" -- ${cur}))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors" -- ${cur}))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian" -- ${cur}))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar" -- ${cur}))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar" -- ${cur}))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram" -- ${cur}))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance" -- ${cur}))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal" -- ${cur}))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed" -- ${cur}))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement" -- ${cur}))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort" -- ${cur}))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr" -- ${cur}))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point" -- ${cur}))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line" -- ${cur}))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon" -- ${cur}))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline" -- ${cur}))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse" -- ${cur}))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text" -- ${cur}))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph" -- ${cur}))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes" -- ${cur}))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver" -- ${cur}))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood" -- ${cur}))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image" -- ${cur}))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d" -- ${cur}))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma" -- ${cur}))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot" -- ${cur}))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move" -- ${cur}))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name" -- ${cur}))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d" -- ${cur}))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d" -- ${cur}))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d" -- ${cur}))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d" -- ${cur}))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d" -- ${cur}))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d" -- ${cur}))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d" -- ${cur}))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d" -- ${cur}))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d" -- ${cur}))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d" -- ${cur}))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d" -- ${cur}))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d" -- ${cur}))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d" -- ${cur}))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d" -- ${cur}))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d" -- ${cur}))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d" -- ${cur}))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d" -- ${cur}))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d" -- ${cur}))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d" -- ${cur}))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d" -- ${cur}))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d" -- ${cur}))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d" -- ${cur}))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d" -- ${cur}))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d" -- ${cur}))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d" -- ${cur}))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d" -- ${cur}))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d" -- ${cur}))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d" -- ${cur}))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d" -- ${cur}))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d" -- ${cur}))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d" -- ${cur}))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d" -- ${cur}))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip" -- ${cur}))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec" -- ${cur}))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while" -- ${cur}))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat" -- ${cur}))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if" -- ${cur}))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif" -- ${cur}))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check" -- ${cur}))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push" -- ${cur}))
			return 0
			;;
			-pushr | --pushr)
			COMPREPLY=( $(compgen -W "$pushr" -- ${cur}))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error" -- ${cur}))
			return 0
			;;
			-1 | --1)
			COMPREPLY=( $(compgen -W "$1" -- ${cur}))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input" -- ${cur}))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output" -- ${cur}))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose" -- ${cur}))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo" -- ${cur}))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning" -- ${cur}))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command" -- ${cur}))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type" -- ${cur}))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared" -- ${cur}))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot" -- ${cur}))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window" -- ${cur}))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait" -- ${cur}))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select" -- ${cur}))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h" -- ${cur}))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f" -- ${cur}))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t" -- ${cur}))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c" -- ${cur}))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n" -- ${cur}))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r" -- ${cur}))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s" -- ${cur}))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a" -- ${cur}))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm" -- ${cur}))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k" -- ${cur}))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv" -- ${cur}))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d" -- ${cur}))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d" -- ${cur}))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d" -- ${cur}))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d" -- ${cur}))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d" -- ${cur}))
			return 0
			;;
			-r3d | --r3d)
			COMPREPLY=( $(compgen -W "$r3d" -- ${cur}))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d" -- ${cur}))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d" -- ${cur}))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d" -- ${cur}))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d" -- ${cur}))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d" -- ${cur}))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d" -- ${cur}))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d" -- ${cur}))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d" -- ${cur}))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d" -- ${cur}))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d" -- ${cur}))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x" -- ${cur}))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b" -- ${cur}))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l" -- ${cur}))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl" -- ${cur}))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q" -- ${cur}))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p" -- ${cur}))
			return 0
			;;
			-pr | --pr)
			COMPREPLY=( $(compgen -W "$pr" -- ${cur}))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp" -- ${cur}))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e" -- ${cur}))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i" -- ${cur}))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o" -- ${cur}))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v" -- ${cur}))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m" -- ${cur}))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d" -- ${cur}))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d" -- ${cur}))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w" -- ${cur}))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow" -- ${cur}))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op" -- ${cur}))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp" -- ${cur}))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on" -- ${cur}))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn" -- ${cur}))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0" -- ${cur}))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles" -- ${cur}))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles" -- ${cur}))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan" -- ${cur}))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf" -- ${cur}))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify" -- ${cur}))
			return 0
			;;
			-strcmp | --strcmp)
			COMPREPLY=( $(compgen -W "$strcmp" -- ${cur}))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d" -- ${cur}))
			return 0
			;;
			-push_filename | --push_filename)
			COMPREPLY=( $(compgen -W "$push_filename" -- ${cur}))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul" -- ${cur}))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba" -- ${cur}))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram" -- ${cur}))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation" -- ${cur}))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb" -- ${cur}))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges" -- ${cur}))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes" -- ${cur}))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map" -- ${cur}))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed" -- ${cur}))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x" -- ${cur}))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y" -- ${cur}))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z" -- ${cur}))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular" -- ${cur}))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial" -- ${cur}))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear" -- ${cur}))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog" -- ${cur}))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq" -- ${cur}))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local" -- ${cur}))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp" -- ${cur}))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave" -- ${cur}))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass" -- ${cur}))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer" -- ${cur}))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb" -- ${cur}))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow" -- ${cur}))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow" -- ${cur}))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow" -- ${cur}))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow" -- ${cur}))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow" -- ${cur}))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy" -- ${cur}))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels" -- ${cur}))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic" -- ${cur}))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma" -- ${cur}))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones" -- ${cur}))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2" -- ${cur}))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2" -- ${cur}))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx" -- ${cur}))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx" -- ${cur}))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx" -- ${cur}))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx" -- ${cur}))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy" -- ${cur}))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy" -- ${cur}))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy" -- ${cur}))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy" -- ${cur}))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz" -- ${cur}))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz" -- ${cur}))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart" -- ${cur}))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x" -- ${cur}))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y" -- ${cur}))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z" -- ${cur}))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy" -- ${cur}))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz" -- ${cur}))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x" -- ${cur}))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y" -- ${cur}))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z" -- ${cur}))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy" -- ${cur}))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate" -- ${cur}))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array" -- ${cur}))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade" -- ${cur}))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror" -- ${cur}))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random" -- ${cur}))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern" -- ${cur}))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin" -- ${cur}))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid" -- ${cur}))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame" -- ${cur}))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy" -- ${cur}))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round" -- ${cur}))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles" -- ${cur}))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles" -- ${cur}))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles" -- ${cur}))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles" -- ${cur}))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid" -- ${cur}))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow" -- ${cur}))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris" -- ${cur}))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic" -- ${cur}))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle" -- ${cur}))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge" -- ${cur}))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts" -- ${cur}))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses" -- ${cur}))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls" -- ${cur}))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon" -- ${cur}))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing" -- ${cur}))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl" -- ${cur}))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil" -- ${cur}))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw" -- ${cur}))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw" -- ${cur}))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol" -- ${cur}))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism" -- ${cur}))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow" -- ${cur}))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar" -- ${cur}))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective" -- ${cur}))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean" -- ${cur}))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water" -- ${cur}))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave" -- ${cur}))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl" -- ${cur}))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere" -- ${cur}))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower" -- ${cur}))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom" -- ${cur}))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform" -- ${cur}))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye" -- ${cur}))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar" -- ${cur}))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope" -- ${cur}))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread" -- ${cur}))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes" -- ${cur}))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y" -- ${cur}))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch" -- ${cur}))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch" -- ${cur}))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief" -- ${cur}))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl" -- ${cur}))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize" -- ${cur}))
			return 0
			;;
			-mosaic_texture | --mosaic_texture)
			COMPREPLY=( $(compgen -W "$mosaic_texture" -- ${cur}))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels" -- ${cur}))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode" -- ${cur}))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color" -- ${cur}))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color" -- ${cur}))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color" -- ${cur}))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb" -- ${cur}))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels" -- ${cur}))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye" -- ${cur}))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x" -- ${cur}))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y" -- ${cur}))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z" -- ${cur}))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial" -- ${cur}))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond" -- ${cur}))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear" -- ${cur}))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges" -- ${cur}))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph" -- ${cur}))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid" -- ${cur}))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid" -- ${cur}))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace" -- ${cur}))
			return 0
			;;
			-animate | --animate)
			COMPREPLY=( $(compgen -W "$animate" -- ${cur}))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d" -- ${cur}))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d" -- ${cur}))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d" -- ${cur}))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot" -- ${cur}))
			return 0
			;;
			*)
			 _filedir '@(ai|ani|bmp|cur|dia|eps|gif|ggr|ico|jpe|jpeg|jpg|pbm|pcx|pdf|pgm|png|ppm|pnm|ps|ras|sk|svg|svgz|targa|tga|tif|tiff|txt|wbmp|wmf|xbm|xpm)'
			;;
	esac

}

	complete -F _gmic gmic