o=s.taboption('advanced',form.Value,'mtu',_('MTU'),_('Optional. Maximum Transmission Unit of tunnel interface.'));
o.datatype='range(1280,1420)';
o.placeholder='1420';
o.optional=true;
o=s.taboption('advanced',form.Value,'fwmark',_('Firewall Mark'),_('Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, starting with <code>0x</code>.'));
o=ss.option(form.Value,'description',_('Description'),_('Optional. Description of peer.'));
o.placeholder='My Peer';
o.datatype='string';
o.optional=true;
o=ss.option(form.Value,'public_key',_('Public Key'),_('Required. Base64-encoded public key of peer.'));
o.validate=validateBase64;
o.rmempty=false;
o=ss.option(form.Value,'preshared_key',_('Preshared Key'),_('Optional. Base64-encoded preshared key. Adds in an additional layer of symmetric-key cryptography for post-quantum resistance.'));
o.password=true;
o.validate=validateBase64;
o.optional=true;
o=ss.option(form.DynamicList,'allowed_ips',_('Allowed IPs'),_("Required. IP addresses and prefixes that this peer is allowed to use inside the tunnel. Usually the peer's tunnel IP addresses and the networks the peer routes through the tunnel."));
o=ss.option(form.Flag,'route_allowed_ips',_('Route Allowed IPs'),_('Optional. Create routes for Allowed IPs for this peer.'));
o=ss.option(form.Value,'endpoint_host',_('Endpoint Host'),_('Optional. Host of peer. Names are resolved prior to bringing up the interface.'));
o.placeholder='vpn.example.com';
o.datatype='host';
o=ss.option(form.Value,'endpoint_port',_('Endpoint Port'),_('Optional. Port of peer.'));
o.placeholder='51820';
o.datatype='port';
o=ss.option(form.Value,'persistent_keepalive',_('Persistent Keep Alive'),_('Optional. Seconds between keep alive messages. Default is 0 (disabled). Recommended value if this device is behind a NAT is 25.'));