Should be printed in vertical position, so the locks do not break. Supports are needed mostly to create large enough contact layer.
OpenSCAD source included, I'm sorry for sparse comments and short variable names, but I'm too lazy right now to refactor it. ;o) And I do not expect anybody have need to modify it anyway.
The author hasn't provided the model origin yet.