text:
Note, by default, openldap comes with ldaps support. The default value are:

*   olcTLSCACertificatePath: /etc/openldap/certs
*   olcTLSCertificateFile: "OpenLDAP Server"
*   olcTLSCertificateKeyFile: /etc/openldap/certs/password

To test if TLS is configured, run `ldapsearch -LLLY EXTERNAL -H ldapi:/// -b cn=config -s base | grep -i tls`

## Create a self-signed certificate

Thanks to [Paul Kehrer ](https://langui.sh/2009/01/18/openssl-self-signed-ca/)
and [David Robillard](http://itdavid.blogspot.ca/2012/05/howto-centos-6.html)
for their great articles. This installation procedure wasn't as smooth as I
would expect so here's a recap.

This is using the [OpenSSL](https://www.openssl.org/) library. Although not
tested, [Brad Chen](http://www.bradchen.com/blog/2012/08/openldap-tls-issue)
wrote a comprehensive tutorial on using the
[Mozilla NSS](https://developer.mozilla.org/en/docs/NSS) tools.

We start by positioning ourself inside a new directory.

```bash
mkdir /tmp/openldap
cd /tmp/openldap
umask 066
```

Generate a privkey.pem file (base64 encoded RSA private key) as well as a
openldap.hadoop.ca.cer file containing the self-signed Certificate Authority
(CA) public key with a 3650 day validity
period. Both will be referenced in our CA configuration. You may leave the
challenge password blank.

```bash
openssl req -newkey rsa:2048 -days 3650 -x509 -nodes -out openldap.hadoop.ca.cer
```

Here's the output:

```
Generating a 2048 bit RSA private key
........................+++
...............................................................................+++
writing new private key to 'privkey.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Adaltas
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:openldap.hadoop
Email Address []:david@adaltas.com
```

Now prepare a configuration file "myca.conf" and substitute the properties
"certificate", "database", "private_key", "serial" with their correct values.

```
[ ca ]
default_ca = myca

[ crl_ext ]
# issuerAltName=issuer:copy  #this would copy the issuer name to altname
authorityKeyIdentifier=keyid:always

[ myca ]
new_certs_dir = /tmp
unique_subject = no
certificate = /tmp/openldap/openldap.hadoop.ca.cer
database = /tmp/openldap/certindex
private_key = /tmp/openldap/privkey.pem
serial = /tmp/openldap/serialfile
default_days = 365
default_md = sha1
policy = myca_policy
x509_extensions = myca_extensions

[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = optional
organizationName = supplied
organizationalUnitName = optional

[ myca_extensions ]
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
keyUsage = digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth
crlDistributionPoints = URI:http://path.to.crl/myca.crl
```

The files "certindex" and "serialfile" referenced by the CA configuration must also be intialized:

```
touch certindex
echo 000a > serialfile
```

We are now ready to create our CSR (certificate signing request) and private
key, leave the challenge password empty:

```bash
openssl req -newkey rsa:1024 -nodes -out openldap.hadoop.csr -keyout openldap.hadoop.key
```

Here's the output:

```
Generating a 1024 bit RSA private key
....................................................................................................................++++++
..................................................................++++++
writing new private key to 'openldap.hadoop.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Adaltas
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:openldap.hadoop
Email Address []:david@adaltas.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
```

We can now issue the certificate:

```bash
openssl ca -batch -config ./myca.conf -notext -in openldap.hadoop.csr -out openldap.hadoop.cer
```

Here's the output:

```
Using configuration from /tmp/openldap/myca.conf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'FR'
stateOrProvinceName   :PRINTABLE:'France'
localityName          :PRINTABLE:'Paris'
organizationName      :PRINTABLE:'Adaltas'
commonName            :PRINTABLE:'openldap.hadoop'
emailAddress          :IA5STRING:'david@adaltas.com'
Certificate is to be certified until Feb 28 12:44:54 2015 GMT (365 days)

Write out database with 1 new entries
Data Base Updated
```

The certificate is generated and can be visualized and checked with:

```bash
openssl x509 -noout -text -in openldap.hadoop.cer
openssl verify -CAfile openldap.hadoop.ca.cer openldap.hadoop.cer
```

We are now ready to deploy our certificate. This must be executed on the
OpenLDAP server. Import the keys if they were generated from a different server.

```bash
chmod 644 openldap.hadoop.cer; chown ldap:ldap openldap.hadoop.cer
mv openldap.hadoop.cer /etc/pki/tls/certs

chmod 400 openldap.hadoop.key; chown ldap:ldap openldap.hadoop.key
mv openldap.hadoop.key /etc/pki/tls/certs

chmod 400 openldap.hadoop.ca.cer; chown ldap:ldap openldap.hadoop.ca.cer
mv openldap.hadoop.ca.cer /etc/pki/tls/certs
```

Update the ldap configuration by editing "/etc/openldap/slapd.d/cn=config.ldif" or running:

```bash
ldapmodify -Y EXTERNAL -H ldapi:/// <<-EOF
dn: cn=config
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/pki/tls/certs/openldap.hadoop.cer
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/pki/tls/certs/openldap.hadoop.key
-
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/pki/tls/certs/openldap.hadoop.ca.cer
EOF
```

TLS should now be configured:

```bash
sudo ldapsearch -LLLY EXTERNAL -H ldapi:/// -b cn=config -s base | grep -i tls
```

should print

```
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
olcTLSCertificateFile: /etc/pki/tls/certs/openldap.hadoop.cer
olcTLSCertificateKeyFile: /etc/pki/tls/certs/openldap.hadoop.key
olcTLSVerifyClient: never
```

and

```bash
openssl s_client -connect `hostname`:636 -showcerts -state -CAfile /etc/pki/tls/certs/cacert.pem
```

should print

```
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 C = FR, ST = France, L = Paris, O = Adaltas, CN = openldap.hadoop, emailAddress = david@adaltas.com
verify return:1
depth=0 CN = openldap.hadoop, ST = France, C = FR, emailAddress = david@adaltas.com, O = Adaltas
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
---
Certificate chain
 0 s:/CN=openldap.hadoop/ST=France/C=FR/emailAddress=david@adaltas.com/O=Adaltas
   i:/C=FR/ST=France/L=Paris/O=Adaltas/CN=openldap.hadoop/emailAddress=david@adaltas.com
-----BEGIN CERTIFICATE-----
MIIDfjCCAmagAwIBAgIBCjANBgkqhkiG9w0BAQUFADB8MQswCQYDVQQGEwJGUjEP
MA0GA1UECBMGRnJhbmNlMQ4wDAYDVQQHEwVQYXJpczEQMA4GA1UEChMHQWRhbHRh
czEYMBYGA1UEAxMPb3BlbmxkYXAuaGFkb29wMSAwHgYJKoZIhvcNAQkBFhFkYXZp
ZEBhZGFsdGFzLmNvbTAeFw0xNDAyMjgxMjQ0NTRaFw0xNTAyMjgxMjQ0NTRaMGwx
GDAWBgNVBAMTD29wZW5sZGFwLmhhZG9vcDEPMA0GA1UECBMGRnJhbmNlMQswCQYD
VQQGEwJGUjEgMB4GCSqGSIb3DQEJARYRZGF2aWRAYWRhbHRhcy5jb20xEDAOBgNV
BAoTB0FkYWx0YXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO61QNip/1e9
YPuPFSpmmApDkjq4M05+1qzi5imtZHJ2aMxIinBx5RouT/b+3z1sLJWHL4sDSCjh
AXRemTdSf1M5E4sLkJgRxoY+w4/T/spZsYJeLE/svCDEmwbChLv7b+RRW5LNVS0w
XZEcdK7UmRIRqxOz7uz/8PKtBU1WgOXrAgMBAAGjgZ4wgZswCQYDVR0TBAIwADAd
BgNVHQ4EFgQUUH9A9HJWF5mD7ykrHibR4Rb2OocwHwYDVR0jBBgwFoAUirdnZmId
Ak/iEKq8FwAMT1Gqe90wCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB
MCwGA1UdHwQlMCMwIaAfoB2GG2h0dHA6Ly9wYXRoLnRvLmNybC9teWNhLmNybDAN
BgkqhkiG9w0BAQUFAAOCAQEAkSsdHAw/MRc5/85hBwwmVKPudxIQQXqzGCm4NSsj
cgZ+o/ni+Wv1qqjC03kpIMRDzSSyH1Kx7c+AwJraZ/X2E+/ja9e1QrEQ8uOQPE+X
XnuOMV1aEKz1iRnlzUNXz5lsVgp9whjdLRdHWT+dzQ6My/BHrP5Ryfxoq06U+Iih
NnBkI0Tt+co+jraZWpdAVLFNdhvR0M7nfhAG3b48E0RXcfB44qUn5tQhV41BZOdh
+yctKMR5+12RBpTrXHFYAByn3HR5vAzxwkR9EtvDJco4S1wmu8kpu/XUV+tyscxg
sE8brtj7R9NerJto3eG6C6ZZmgr9+O08Pg7Du3cjhfWO3Q==
-----END CERTIFICATE-----
 1 s:/C=FR/ST=France/L=Paris/O=Adaltas/CN=openldap.hadoop/emailAddress=david@adaltas.com
   i:/C=FR/ST=France/L=Paris/O=Adaltas/CN=openldap.hadoop/emailAddress=david@adaltas.com
-----BEGIN CERTIFICATE-----
MIIEXjCCA0agAwIBAgIJAI6/j5t7tLsgMA0GCSqGSIb3DQEBBQUAMHwxCzAJBgNV
BAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQK
EwdBZGFsdGFzMRgwFgYDVQQDEw9vcGVubGRhcC5oYWRvb3AxIDAeBgkqhkiG9w0B
CQEWEWRhdmlkQGFkYWx0YXMuY29tMB4XDTE0MDIyODEwMTE0MFoXDTI0MDIyNjEw
MTE0MFowfDELMAkGA1UEBhMCRlIxDzANBgNVBAgTBkZyYW5jZTEOMAwGA1UEBxMF
UGFyaXMxEDAOBgNVBAoTB0FkYWx0YXMxGDAWBgNVBAMTD29wZW5sZGFwLmhhZG9v
cDEgMB4GCSqGSIb3DQEJARYRZGF2aWRAYWRhbHRhcy5jb20wggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDWCxzm/5giT78VZTsTW8a3Scv4BpN5BG6fJZfG
8OMLUWL5+brg+izXzQhnZ+FX+0OO/10cK008VwhgHWyEce3eOhNdrOlPbSX1B02B
nCcFhKX8awcqOnsxnbkWxD0Ogf87foMirajck/WD8c68s9KINmz+CdDHn07K4YN0
PBdwe0Mt4FdIeSVDg/dakbUSAuFX3NOU1o5kpmQbVH9nST72aZcaC/j3tzVEMP3p
S/LkZAMk8lyUFj3vFCmnw6d/CTOL0AjQLrLpN28diWFH6nsOngaqrL0YAiy+F2k5
xKzPPiKjWfv1SJ3/+B9mMQilfX6+K++3mG8rjHCDAj95sH1BAgMBAAGjgeIwgd8w
HQYDVR0OBBYEFIq3Z2ZiHQJP4hCqvBcADE9RqnvdMIGvBgNVHSMEgacwgaSAFIq3
Z2ZiHQJP4hCqvBcADE9RqnvdoYGApH4wfDELMAkGA1UEBhMCRlIxDzANBgNVBAgT
BkZyYW5jZTEOMAwGA1UEBxMFUGFyaXMxEDAOBgNVBAoTB0FkYWx0YXMxGDAWBgNV
BAMTD29wZW5sZGFwLmhhZG9vcDEgMB4GCSqGSIb3DQEJARYRZGF2aWRAYWRhbHRh
cy5jb22CCQCOv4+be7S7IDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IB
AQDM0uqSDPLcJSnh0d3O1z/Q+Lthrm27htrtUoaJVzg5W6AT57tnnW0d66bMym9y
+YO4v/BiG9PjdP1uXu+jL3Qn7Cpg8tUABqXhIxSlNDklfNA7fi7ZY4c78sJV20K2
i3w44yA+reFqrja8RxPCplIDT741kcxS2kD9NlwcaMAqlxzZd6767zkg/xbrW1/t
1OWvl0cXNysjalcmAP2kdO6oQAWJRNwowI8j/GqT7fo/F+IVx3sszSx+0HVpfdKI
PWNi+/Pxu9dzxbRkJsXmhxRsSemMQLqsT0LnQ0e6OtpAXf+T8lYZ+K/Dc+B8WkkJ
7o6Ob+tH8SkEkMsO6/qL4UAl
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=openldap.hadoop/ST=France/C=FR/emailAddress=david@adaltas.com/O=Adaltas
issuer=/C=FR/ST=France/L=Paris/O=Adaltas/CN=openldap.hadoop/emailAddress=david@adaltas.com
---
No client certificate CA names sent
---
SSL handshake has read 2391 bytes and written 397 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : ECDHE-RSA-AES256-SHA
    Session-ID: 1E58B88449A5C6F6EEA34F7EBD6FCE7D7B2D0BCA4B4FEC72C8163E676E77DA6C
    Session-ID-ctx:
    Master-Key: 1A19B4BF692DAAD1B2919E2A7BF7CC5B9078E6F6C0F6D7ADA94ADD44770D281A605A93B16CF35D32F86CC0028E47638A
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1393595866
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
```

You can disable CA validation with the command `export LDAPTLS_REQCERT=never`.

We will now setup the OpenLDAP client environment. Note, this could be done from openldap client server. Start by editing "/etc/openldap/ldap.conf".

```
BASE            dc=ryba
URI             ldap://openldap.hadoop
TLS_CACERT      /etc/pki/tls/certs/openldap.hadoop.cer
TLS_REQCERT     allow
TIMELIMIT       15
TIMEOUT         20
```

If you are on a different server, place your certificate into "/etc/pki/tls/certs/openldap.hadoop.cer".

You shall now be able to query the ldap server over ldaps.

```
ldapsearch -H ldaps://master3.hadoop:636 -x -D cn=Manager,dc=ryba -w test -b dc=ryba
ldapsearch -Y EXTERNAL -H ldapi:/// -b dc=ryba
```

    module.exports = header: 'OpenLDAP Server TLS Deploy', handler: ({options}) ->

      return unless options.tls
      options.tls_ca_cert_target = "/etc/openldap/certs/#{path.basename options.tls_ca_cert_file}"
      options.tls_cert_target = "/etc/openldap/certs/#{path.basename options.tls_cert_file}"
      options.tls_key_target = "/etc/openldap/certs/#{path.basename options.tls_key_file}"

## Deploy

Place the certificates into their final destinations.

      (if options.tls_ca_cert_local then @file.download else @system.copy)
        header: 'Deploy CA'
        source: options.tls_ca_cert_file
        target: "#{options.tls_ca_cert_target}"
        uid: 'ldap'
        gid: 'ldap'
        mode: 0o0400
      (if options.tls_cert_local then @file.download else @system.copy)
        header: 'Deploy Cert'
        source: options.tls_cert_file
        target: "#{options.tls_cert_target}"
        uid: 'ldap'
        gid: 'ldap'
        mode: 0o0400
      (if options.tls_key_local then @file.download else @system.copy)
        header: 'Deploy Key'
        source: options.tls_key_file
        target: "#{options.tls_key_target}"
        uid: 'ldap'
        gid: 'ldap'
        mode: 0o0400

## Registration

Register the certificates inside the internal LDAP config database.
lucasbak 1890404: Since 7.5 I have noticed a bug where slapd server does not accept
olcTLSCertificateKeyFile and olcTLSCertificateFile modify separately but needs
to modify both entries at the same time.

      # @system.execute
      #   header: 'Register CA Path'
      #   unless_exec: """
      #   ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" \
      #   | grep -E "olcTLSCACertificatePath: /etc/openldap/certs"
      #   """
      #   cmd: """
      #   ldapmodify -Y EXTERNAL -H ldapi:/// <<-EOF
      #   dn: cn=config
      #   changetype: modify
      #   replace: olcTLSCACertificatePath
      #   olcTLSCACertificatePath: /etc/openldap/certs
      #   EOF
      #   """
      @system.execute
        header: 'Register CA'
        unless_exec: """
        ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" \
        | grep -E "olcTLSCACertificateFile: #{options.tls_ca_cert_target}"
        """
        cmd: """
        ldapmodify -Y EXTERNAL -H ldapi:/// <<-EOF
        dn: cn=config
        changetype: modify
        replace: olcTLSCACertificateFile
        olcTLSCACertificateFile: #{options.tls_ca_cert_target}
        EOF
        """
      @system.execute
        header: 'Register Cert & Key'
        unless_exec: """
        ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" \
        | grep -E "olcTLSCertificateFile: #{options.tls_cert_target}"
        """
        cmd: """
        ldapmodify -Y EXTERNAL -H ldapi:/// <<-EOF
        dn: cn=config
        changetype: modify
        replace: olcTLSCertificateFile
        olcTLSCertificateFile: #{options.tls_cert_target}
        -
        replace: olcTLSCertificateKeyFile
        olcTLSCertificateKeyFile: #{options.tls_key_target}
        EOF
        """

## Activation

Register the SSL support into the system configuration located inside the
"/etc/sysconfig" directory.

      sysconfig_file = null
      write = []
      @call if_os: name: ['centos', 'redhat', 'oracle'], version: '6', ->
        write.push
          match: /^SLAPD_LDAPS.*/mg
          replace: 'SLAPD_LDAPS=yes'
          append: true
        sysconfig_file = '/etc/sysconfig/ldap'
      @call if_os: name: ['centos', 'redhat', 'oracle'], version: '7', ->
        write.push
          match: /^SLAPD_URLS.*/mg
          replace: "SLAPD_URLS=\"#{options.urls.join ' '}\""
          append: true
        sysconfig_file = '/etc/sysconfig/slapd'
      @call unless_os: name: ['centos', 'redhat', 'oracle'], ->
        throw Error 'Unsupported OS'
      @call -> @file
        header: 'Activation'
        write: write
        target: sysconfig_file
      @service.restart
        header: 'Restart'
        name: 'slapd'
        if: -> @status()

## Dependencies

    path = require 'path'


text:
namespace fastbird
{
	class IDebugDrawer
	{
	public:
		virtual void DrawLine(const Vec3& from, const Vec3& to, const Color& color) = 0;
		virtual void DrawLine(const Vec3& from, const Vec3& to, const Color& fromColor, const Color& toColor) = 0;
		virtual void DrawTexturedThickLine(const Vec3& start, const Vec3& end, const Color& color0, const Color& color1, float thickness,
			const char* texture, bool textureFlow) = 0;

		virtual void	DrawSphere(const Vec3& p, float radius, const Color& color) = 0;
		virtual void	DrawBox(const Vec3& boxMin, const Vec3& boxMax, const Color& color, float alpha) = 0;
		virtual void	DrawTriangle(const Vec3& a, const Vec3& b, const Vec3& c, const Color& color, float alpha) = 0;
		virtual void  Draw3DText(const Vec3& location, const char* text) = 0;
	};
}

redpajama_set_name: RedPajamaGithub


text:
class Main extends swan.Group {

    public constructor() {
        super();
        this.width = 400;
        this.height = 400;
        this.showIcon();
    }

    icon: lark.Bitmap;
    startScaleValue: number;
    startRotationValue: number;
    startPoint: lark.Point;

    public showIcon() {
        var bitmap = new swan.Image('http://img.lark.egret.com/lark.png');
        var text = new lark.TextField("Hello Lark");
        text.y = bitmap.height + 10;
        bitmap.x = (text.width-bitmap.width)*0.5;
        var stage = this.stage;
        bitmap.horizontalCenter = 0;
        bitmap.verticalCenter = 0;
        this.addChild(bitmap);
        this.icon = bitmap;

        //Tap(µãÒ»ÏÂ)
        var tap: neoges.TapGesture = new neoges.TapGesture(this.icon);
        tap.on(neoges.GestureEvent.ENDED, this.onTap, this);

        //Double Tap (Ë«»÷)
        var tap2: neoges.DoubleTapGesture = new neoges.DoubleTapGesture(this.icon);
        tap2.on(neoges.GestureEvent.ENDED, this.onDoubleTap, this);

        //Pinch(¶þÖ¸ÍùƒÈ»òÍùÍⲦ¶¯£¬Æ½Ê±¾³£Óõ½µÄËõ·Å)
        var tap3: neoges.PinchGesture = new neoges.PinchGesture(this.icon);
        tap3.on(neoges.GestureEvent.BEGAN, this.onPinchBegan, this);
        tap3.on(neoges.GestureEvent.UPDATE, this.onPinchUpdate, this);
        tap3.on(neoges.GestureEvent.ENDED, this.onPinchEnd, this);

        //Rotation(Ðýת)
        var tap4: neoges.RotationGesture = new neoges.RotationGesture(this.icon);
        tap4.on(neoges.GestureEvent.BEGAN, this.onRotationBegan, this);
        tap4.on(neoges.GestureEvent.UPDATE, this.onRotationUpdate, this);
        tap4.on(neoges.GestureEvent.ENDED, this.onRotationEnd, this);

        //Swipe(»¬¶¯£¬¿ìËÙÒƶ¯)
        var tap5: neoges.SwipeGesture = new neoges.SwipeGesture(this.icon);
        tap5.on(neoges.GestureEvent.ENDED, this.onSwipeEnd, this);

        //Pan (ÍÏÒÆ£¬ÂýËÙÒƶ¯)
        var tap6: neoges.PanGesture = new neoges.PanGesture(this.icon);
        tap6.on(neoges.GestureEvent.BEGAN, this.onPanBegan, this);
        tap6.on(neoges.GestureEvent.UPDATE, this.onPanUpdate, this);
        tap6.on(neoges.GestureEvent.ENDED, this.onPanEnd, this);
        //LongPress(³¤°´)
        var tap7: neoges.LongPressGesture = new neoges.LongPressGesture(this.icon);
        tap7.on(neoges.GestureEvent.ENDED, this.onLongPressEnd, this);
    }
    /**on tap*/
    private onTap(event: neoges.GestureEvent): void {
        this.showMsg("tap on " + event.host.name);
    }
    /**on double tap*/
    private onDoubleTap(event: neoges.GestureEvent): void {
        this.showMsg("double tap on " + event.host.name);
    }
    /**swipe*/
    private onSwipeEnd(event: neoges.GestureEvent): void {
        this.showMsg("swipe " + event.offsetX + "," + event.offsetY);
    }
    /**long press*/
    private onLongPressEnd(event: neoges.GestureEvent): void {
        this.showMsg("long press on " + event.host.name);
    }

    /**pinch*/
    private onPinchBegan(event: neoges.GestureEvent): void {
        //console.log("pinch began on "+event.host.name);
        this.startScaleValue = this.icon.scaleX;
    }
    /**pinch*/
    private onPinchUpdate(event: neoges.GestureEvent): void {
        //console.log("pinch update "+event.value);
        this.icon.scaleX = this.startScaleValue * event.value;
        this.icon.scaleY = this.icon.scaleX;
    }
    /**pinch*/
    private onPinchEnd(event: neoges.GestureEvent): void {
        this.showMsg("pinch end on " + event.host.name);
    }
    /**rotation*/
    private onRotationBegan(event: neoges.GestureEvent): void {
        //console.log("rotation began on "+event.host.name);
        this.startRotationValue = this.icon.rotation;
    }
    /**rotation*/
    private onRotationUpdate(event: neoges.GestureEvent): void {
        //console.log("rotation update ",event.value);
        this.icon.rotation = this.startRotationValue + event.value;
    }
    /**rotation*/
    private onRotationEnd(event: neoges.GestureEvent): void {
        this.showMsg("rotation end on " + event.host.name);
    }
    /**pan*/
    private onPanBegan(event: neoges.GestureEvent): void {
        //console.log("pan began on "+event.host.name);
        this.startPoint = new lark.Point(event.host.x, event.host.y);
    }
    /**pan*/
    private onPanUpdate(event: neoges.GestureEvent): void {
        //console.log("rotation update ",event.value);
        event.host.x = this.startPoint.x + event.offsetX;
        event.host.y = this.startPoint.y + event.offsetY;
    }
    /**pan*/
    private onPanEnd(event: neoges.GestureEvent): void {
        this.showMsg("pan end on " + event.host.name);
    }
    /**²»ÐèÒªÊÖÊƵÄʱºò£¬¿ÉÒÔÇåÀíÊÖÊÆ*/
    private clearGesture(gestureInstance: neoges.IGesture): void {
        gestureInstance.dispose();
    }
    /**ÏÔʾÐÅÏ¢*/
    private showMsg(value: string): void {
        lark.log(value);
    }
}


text:
<?php
	require(__QCUBED_CORE__ . '/codegen/QCodeGenBase.class.php');

	/**
	 * Feel free to override any core QCodeGenBase methods here
	 * @package Codegen
	 */
	class QCodeGen extends QCodeGenBase {
		// Example: Overriding the Pluralize method
		protected function Pluralize($strName) {
			// Special Rules go Here
			switch (true) {
				case ($strName == 'person'):
					return 'people';
				case ($strName == 'Person'):
					return 'People';
				case ($strName == 'PERSON'):
					return 'PEOPLE';

				// Trying to be cute here...
				case (strtolower($strName) == 'fish'):
					return $strName . 'ies';

				// Otherwise, call parent
				default:
					return parent::Pluralize($strName);
			}
		}
	}

	require(__QCUBED_CORE__ . '/codegen/library.inc.php');
?>


text:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="BookmarkManager">
    <bookmark url="file://$PROJECT_DIR$/app/Student.php" />
  </component>
  <component name="ChangeListManager">
    <list default="true" id="3ede724d-7222-414a-ac30-fe02c1761dd6" name="Default" comment="">
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/Http/Controllers/ApplyController.php" afterPath="$PROJECT_DIR$/app/Http/Controllers/ApplyController.php" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/Http/routes.php" afterPath="$PROJECT_DIR$/app/Http/routes.php" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/views/admin/list.blade.php" afterPath="$PROJECT_DIR$/resources/views/admin/list.blade.php" />
    </list>
    <ignored path="neuradio.iws" />
    <ignored path=".idea/workspace.xml" />
    <ignored path=".idea/dataSources.local.xml" />
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="TRACKING_ENABLED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="CreatePatchCommitExecutor">
    <option name="PATCH_PATH" value="" />
  </component>
  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
  <component name="FavoritesManager">
    <favorites_list name="neuradio" />
  </component>
  <component name="FileEditorManager">
    <leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
      <file leaf-file-name="app.blade.php" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/resources/views/layouts/app.blade.php">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="300">
              <caret line="10" column="74" selection-start-line="10" selection-start-column="4" selection-end-line="10" selection-end-column="74" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="index.blade.php" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/resources/views/show/index.blade.php">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="30">
              <caret line="6" column="29" selection-start-line="6" selection-start-column="29" selection-end-line="6" selection-end-column="29" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="routes.php" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/app/Http/routes.php">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="300">
              <caret line="31" column="65" selection-start-line="31" selection-start-column="65" selection-end-line="31" selection-end-column="65" />
              <folding>
                <element signature="e#7#392#0#PHP" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="ApplyController.php" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/app/Http/Controllers/ApplyController.php">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="-1950">
              <caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="list.blade.php" pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/resources/views/admin/list.blade.php">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="570">
              <caret line="25" column="17" selection-start-line="25" selection-start-column="17" selection-end-line="25" selection-end-column="17" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
    </leaf>
  </component>
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  </component>
  <component name="IdeDocumentHistory">
    <option name="CHANGED_PATHS">
      <list>
        <option value="$PROJECT_DIR$/resources/views/layouts/app.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/index.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/apply.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/apply/success.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/errors/multistunum.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/auth/register.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/errors/unauthorized.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/auth/login.blade.php" />
        <option value="$PROJECT_DIR$/app/Http/Middleware/RedirectIfAuthenticated.php" />
        <option value="$PROJECT_DIR$/config/filesystems.php" />
        <option value="$PROJECT_DIR$/config/excel.php" />
        <option value="$PROJECT_DIR$/database/migrations/2016_08_25_083503_create_students_table.php" />
        <option value="$PROJECT_DIR$/resources/views/apply/apply.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/apply/confirm.blade.php" />
        <option value="$PROJECT_DIR$/app/Http/Controllers/Auth/AuthController.php" />
        <option value="$PROJECT_DIR$/composer.json" />
        <option value="$PROJECT_DIR$/config/app.php" />
        <option value="$PROJECT_DIR$/resources/views/admin/index.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/welcome.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/show/2.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/show/3.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/show/4.blade.php" />
        <option value="$PROJECT_DIR$/public/css/style_common.css" />
        <option value="$PROJECT_DIR$/resources/views/show/1.blade.php" />
        <option value="$PROJECT_DIR$/resources/views/show/index.blade.php" />
        <option value="$PROJECT_DIR$/app/Http/routes.php" />
        <option value="$PROJECT_DIR$/app/Http/Controllers/ApplyController.php" />
        <option value="$PROJECT_DIR$/resources/views/admin/list.blade.php" />
      </list>
    </option>
  </component>
  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
  <component name="JsGulpfileManager">
    <detection-done>true</detection-done>
    <gulpfiles>
      <GulpfileState>
        <gulpfile-path>$PROJECT_DIR$/gulpfile.js</gulpfile-path>
      </GulpfileState>
    </gulpfiles>
    <sorting>DEFINITION_ORDER</sorting>
  </component>
  <component name="PhpServers">
    <servers />
  </component>
  <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
  <component name="ProjectFrameBounds">
    <option name="x" value="-9" />
    <option name="y" value="-9" />
    <option name="width" value="1938" />
    <option name="height" value="1048" />
  </component>
  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
    <OptionsSetting value="true" id="Add" />
    <OptionsSetting value="true" id="Remove" />
    <OptionsSetting value="true" id="Checkout" />
    <OptionsSetting value="true" id="Update" />
    <OptionsSetting value="true" id="Status" />
    <OptionsSetting value="true" id="Edit" />
    <ConfirmationsSetting value="0" id="Add" />
    <ConfirmationsSetting value="0" id="Remove" />
  </component>
  <component name="ProjectView">
    <navigator currentView="ProjectPane" proportions="" version="1">
      <flattenPackages />
      <showMembers />
      <showModules />
      <showLibraryContents />
      <hideEmptyPackages />
      <abbreviatePackageNames />
      <autoscrollToSource />
      <autoscrollFromSource />
      <sortByType />
      <manualOrder />
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="ProjectPane">
        <subPane>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="resources" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="views" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="resources" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="views" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="show" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="resources" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="views" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="layouts" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="resources" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="views" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="apply" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="resources" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="views" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="admin" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="resources" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="public" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="public" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="css" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="app" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="app" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Http" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="neuradio" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="app" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Http" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Controllers" />
              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
            </PATH_ELEMENT>
          </PATH>
        </subPane>
      </pane>
      <pane id="Scope" />
      <pane id="Scratches" />
    </panes>
  </component>
  <component name="PropertiesComponent">
    <property name="settings.editor.selected.configurable" value="reference.settingsdialog.IDE.editor.colors.Font" />
    <property name="settings.editor.splitter.proportion" value="0.23474178" />
    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
    <property name="WebServerToolWindowFactoryState" value="false" />
  </component>
  <component name="RecentsManager">
    <key name="CopyFile.RECENT_KEYS">
      <recent name="F:\document\documents\website\laravel\neuradio\resources\views\show" />
      <recent name="F:\document\documents\website\laravel\neuradio\resources\views\auth" />
      <recent name="F:\document\documents\website\laravel\neuradio\resources\views\errors" />
      <recent name="F:\document\documents\website\laravel\neuradio\resources\views\apply" />
      <recent name="F:\document\documents\website\laravel\neuradio\resources" />
    </key>
    <key name="MoveFile.RECENT_KEYS">
      <recent name="F:\document\documents\website\laravel\neuradio\resources\views\apply" />
      <recent name="F:\document\documents\website\laravel\neuradio\resources\views" />
      <recent name="F:\document\documents\website\laravel\neuradio\resources\views\vendor" />
    </key>
  </component>
  <component name="RunManager">
    <configuration default="true" type="ErlangApplicationRunConfiguration" factoryName="Erlang Application" show_console_on_std_err="false" show_console_on_std_out="false">
      <option name="debugOptions">
        <ErlangDebugOptions>
          <option name="autoUpdateModulesNotToInterpret" value="true" />
          <option name="modulesNotToInterpret">
            <set />
          </option>
        </ErlangDebugOptions>
      </option>
      <option name="erlFlags" value="" />
      <option name="moduleAndFunction" value="" />
      <option name="params" value="" />
      <option name="useTestCodePath" value="false" />
      <option name="workDirectory" />
      <module />
      <method />
    </configuration>
    <configuration default="true" type="ErlangUnitRunConfigurationType" factoryName="Erlang Eunit" show_console_on_std_err="false" show_console_on_std_out="false">
      <option name="debugOptions">
        <ErlangDebugOptions>
          <option name="autoUpdateModulesNotToInterpret" value="true" />
          <option name="modulesNotToInterpret">
            <set />
          </option>
        </ErlangDebugOptions>
      </option>
      <option name="workDirectory" />
      <module />
      <option name="functionNames">
        <set />
      </option>
      <option name="kind" value="MODULE" />
      <option name="moduleNames">
        <set />
      </option>
      <method />
    </configuration>
    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
      <method />
    </configuration>
    <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" working-dir="">
      <method />
    </configuration>
    <configuration default="true" type="PHPUnitRunConfigurationType" factoryName="PHPUnit">
      <TestRunner />
      <method />
    </configuration>
    <configuration default="true" type="PhpBehatConfigurationType" factoryName="Behat">
      <BehatRunner />
      <method />
    </configuration>
    <configuration default="true" type="PhpLocalRunConfigurationType" factoryName="PHP Console">
      <method />
    </configuration>
    <configuration default="true" type="RebarEunitRunConfigurationType" factoryName="Erlang Rebar Eunit" show_console_on_std_err="false" show_console_on_std_out="false">
      <option name="command" value="eunit" />
      <option name="skipDependencies" value="true" />
      <module />
      <method />
    </configuration>
    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
      <node-interpreter>project</node-interpreter>
      <node-options />
      <gulpfile />
      <tasks />
      <arguments />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
      <command value="run-script" />
      <scripts />
      <node-interpreter value="project" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
      <node-interpreter>project</node-interpreter>
      <node-options />
      <working-directory />
      <pass-parent-env>true</pass-parent-env>
      <envs />
      <ui />
      <extra-mocha-options />
      <test-kind>DIRECTORY</test-kind>
      <test-directory />
      <recursive>false</recursive>
      <method />
    </configuration>
  </component>
  <component name="ShelveChangesManager" show_recycled="false">
    <option name="remove_strategy" value="false" />
  </component>
  <component name="SvnConfiguration">
    <configuration />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="3ede724d-7222-414a-ac30-fe02c1761dd6" name="Default" comment="" />
      <created>1472113121167</created>
      <option name="number" value="Default" />
      <option name="presentableId" value="Default" />
      <updated>1472113121167</updated>
      <workItem from="1472113123118" duration="7623000" />
      <workItem from="1472182306605" duration="701000" />
      <workItem from="1472446381435" duration="27000" />
      <workItem from="1472446511201" duration="32664000" />
      <workItem from="1472564213527" duration="4430000" />
      <workItem from="1473071074252" duration="11085000" />
      <workItem from="1473770596018" duration="7937000" />
      <workItem from="1474456503206" duration="762000" />
    </task>
    <servers />
  </component>
  <component name="TimeTrackingManager">
    <option name="totallyTimeSpent" value="65229000" />
  </component>
  <component name="ToolWindowManager">
    <frame x="-9" y="-9" width="1938" height="1048" extended-state="6" />
    <editor active="true" />
    <layout>
      <window_info id="Gulp" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.19427083" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
    </layout>
  </component>
  <component name="Vcs.Log.UiProperties">
    <option name="RECENTLY_FILTERED_USER_GROUPS">
      <collection />
    </option>
    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
      <collection />
    </option>
  </component>
  <component name="VcsContentAnnotationSettings">
    <option name="myLimit" value="2678400000" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager>
      <breakpoints>
        <line-breakpoint enabled="true" type="php">
          <url>file://$PROJECT_DIR$/app/Http/Controllers/ApplyController.php</url>
          <line>118</line>
        </line-breakpoint>
      </breakpoints>
      <option name="time" value="1" />
    </breakpoint-manager>
    <watches-manager />
  </component>
  <component name="editorHistoryManager">
    <entry file="file://$PROJECT_DIR$/public/web.config">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/public/robots.txt">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/bootstrap/app.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/bootstrap/autoload.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-360">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/storage/logs/.gitignore">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/config/mail.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/config/auth.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-1350">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/server.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/User.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-270">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Controller.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Jobs/Job.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Kernel.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="600">
          <caret line="31" column="6" selection-start-line="31" selection-start-column="6" selection-end-line="31" selection-end-column="6" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Providers/AuthServiceProvider.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/PasswordController.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Events/Event.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Providers/EventServiceProvider.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="840">
          <caret line="29" column="0" selection-start-line="29" selection-start-column="0" selection-end-line="29" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Student.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/apply/success.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="390">
          <caret line="13" column="10" selection-start-line="3" selection-start-column="4" selection-end-line="13" selection-end-column="10" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/config/database.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-90">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/errors/multistunum.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="390">
          <caret line="13" column="10" selection-start-line="13" selection-start-column="10" selection-end-line="13" selection-end-column="10" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/errors/unauthorized.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="330">
          <caret line="11" column="35" selection-start-line="11" selection-start-column="35" selection-end-line="11" selection-end-column="35" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/auth/register.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="270">
          <caret line="9" column="102" selection-start-line="9" selection-start-column="102" selection-end-line="9" selection-end-column="102" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/auth/login.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="300">
          <caret line="10" column="43" selection-start-line="10" selection-start-column="43" selection-end-line="10" selection-end-column="43" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Middleware/EncryptCookies.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/config/filesystems.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1440">
          <caret line="48" column="10" selection-start-line="48" selection-start-column="10" selection-end-line="48" selection-end-column="10" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/config/excel.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-16831">
          <caret line="108" column="29" selection-start-line="108" selection-start-column="29" selection-end-line="108" selection-end-column="29" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/database/migrations/2016_08_25_083503_create_students_table.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="240">
          <caret line="24" column="68" selection-start-line="24" selection-start-column="68" selection-end-line="24" selection-end-column="68" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/AuthController.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="569">
          <caret line="67" column="37" selection-start-line="67" selection-start-column="37" selection-end-line="67" selection-end-column="37" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/apply/confirm.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1941">
          <caret line="77" column="89" selection-start-line="77" selection-start-column="75" selection-end-line="77" selection-end-column="89" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/apply/apply.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="2529">
          <caret line="108" column="18" selection-start-line="108" selection-start-column="18" selection-end-line="108" selection-end-column="18" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Middleware/RedirectIfAuthenticated.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1059">
          <caret line="37" column="35" selection-start-line="37" selection-start-column="35" selection-end-line="37" selection-end-column="35" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Middleware/Authenticate.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-91">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../../AutoUpdate/class.zip.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../../AutoUpdate/performUpdate.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-3439">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/composer.json">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="300">
          <caret line="10" column="33" selection-start-line="10" selection-start-column="33" selection-end-line="10" selection-end-column="33" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/config/app.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-1021">
          <caret line="150" column="25" selection-start-line="150" selection-start-column="7" selection-end-line="150" selection-end-column="25" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/index.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="270">
          <caret line="9" column="27" selection-start-line="9" selection-start-column="27" selection-end-line="9" selection-end-column="27" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/admin/index.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="149">
          <caret line="9" column="39" selection-start-line="9" selection-start-column="39" selection-end-line="9" selection-end-column="39" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../../CSS3/HoverEffect/index.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="551">
          <caret line="74" column="18" selection-start-line="41" selection-start-column="12" selection-end-line="74" selection-end-column="18" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/show/4.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="210">
          <caret line="7" column="41" selection-start-line="7" selection-start-column="41" selection-end-line="7" selection-end-column="41" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/show/3.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="120">
          <caret line="7" column="41" selection-start-line="7" selection-start-column="41" selection-end-line="7" selection-end-column="41" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/show/2.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="210">
          <caret line="7" column="41" selection-start-line="7" selection-start-column="41" selection-end-line="7" selection-end-column="41" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/public/css/style1.css">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="330">
          <caret line="11" column="42" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="42" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/public/css/style_common.css">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="150">
          <caret line="5" column="12" selection-start-line="5" selection-start-column="12" selection-end-line="5" selection-end-column="12" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/show/1.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="240">
          <caret line="8" column="9" selection-start-line="8" selection-start-column="9" selection-end-line="8" selection-end-column="9" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/layouts/app.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="300">
          <caret line="10" column="74" selection-start-line="10" selection-start-column="4" selection-end-line="10" selection-end-column="74" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/welcome.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="90">
          <caret line="3" column="4" selection-start-line="3" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/show/index.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="30">
          <caret line="6" column="29" selection-start-line="6" selection-start-column="29" selection-end-line="6" selection-end-column="29" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/routes.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="300">
          <caret line="31" column="65" selection-start-line="31" selection-start-column="65" selection-end-line="31" selection-end-column="65" />
          <folding>
            <element signature="e#7#392#0#PHP" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/ApplyController.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-1950">
          <caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/resources/views/admin/list.blade.php">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="570">
          <caret line="25" column="17" selection-start-line="25" selection-start-column="17" selection-end-line="25" selection-end-column="17" />
          <folding />
        </state>
      </provider>
    </entry>
  </component>
</project>


text:
<component name="ArtifactManager">
  <artifact type="jar" name="MetaDiffJ:jar">
    <output-path>$PROJECT_DIR$/out/artifacts/MetaDiffJ_jar</output-path>
    <root id="archive" name="MetaDiffJ.jar">
      <element id="module-output" name="MetaDiff" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-jexl-2.1.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-logging-1.1.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-cli-1.2.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-lang3-3.3.2.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/baseCode.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/colt.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-math3-3.3.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-io-2.4.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/guava-18.0.jar" path-in-jar="/" />
    </root>
  </artifact>
</component>


text:
module WSList

  class UnknownService < StandardError; end
  class DuplicateServiceDescription < StandardError; end

  module_function

  # Add a service to the array tracking
  # the playco services
  #
  # @param [WeaselDiesel] The service to add.
  # @return [Array<WeaselDiesel>] All the added services.
  # @raise DuplicateServiceDescription If a service is being duplicated.
  # @api public
  def add(service)
    @list ||= []
    if WSList.find(service.verb, service.url)
      raise DuplicateServiceDescription, "A service accessible via #{service.verb} #{service.url} already exists"
    end
    @list << service
    @list
  end

  # Returns an array of services
  #
  # @return [Array<WeaselDiesel>] All the added services.
  # @api public
  def all
    @list || []
  end

  # Returns a service based on its name
  #
  # @param [String] name The name of the service you are looking for.
  # @raise [UnknownService] if a service with the passed name isn't found.
  # @return [WeaselDiesel] The found service.
  #
  # @api public
  # @deprecated
  def named(name)
    service = all.find{|service| service.name == name}
    if service.nil?
      raise UnknownService, "Service named #{name} isn't available"
    else
      service
    end
  end

  # Returns a service based on its url
  #
  # @param [String] url The url of the service you are looking for.
  # @return [Nil, WeaselDiesel] The found service.
  #
  # @api public
  # @deprecated use #find instead since this method doesn't support a verb being passed
  #  and the url might or might not match depending on the leading slash.
   def [](url)
    @list.find{|service| service.url == url}
  end

  # Returns a service based on its verb and url
  #
  # @param [String] verb The request method (GET, POST, PUT, DELETE)
  # @param [String] url The url of the service you are looking for.
  # @return [Nil, WeaselDiesel] The found service.
  #
  # @api public
  def find(verb, url)
    verb = verb.to_s.downcase.to_sym
    slashed_url = url.start_with?('/') ? url : "/#{url}"
    @list.find{|service| service.verb == verb && service.url == slashed_url}
  end

end


text:
/* /////////////////////////////////////////////////////////////////////////
 * includes
 */

#include <libclimate/internal/common.h>

#include <systemtools/clasp/main.hpp>

#include <libclimate/internal/clasp.clasp.h>

#include <libclimate/internal/stlsoft.stlsoft.h>

/* ///////////////////////////// end of file //////////////////////////// */


text:
package com.intellij.codeInsight.daemon;

import com.intellij.openapi.util.NlsContext;
import org.jetbrains.annotations.Nls;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@NlsContext(prefix = "gutter.name")
@Nls(capitalization = Nls.Capitalization.Sentence)
@Target({ElementType.TYPE_USE, ElementType.PARAMETER, ElementType.METHOD})
public @interface GutterName {
}


text:
<?php
    use yii\helpers\Url;
    use yii\helpers\Html;
    use yii\bootstrap\ActiveForm;
    use akupeduli\metronic\forms\LoginForm;
    use akupeduli\metronic\assets\core\GlobalMediaAsset;

    $media = GlobalMediaAsset::register($this);
?>

                        <?= Html::a( Html::img($media->baseUrl . "/img/logos/logo-2.png"), "#" ) ?>

                                Sign In To Admin

                        <?php $form = ActiveForm::begin([
                                'errorCssClass' => 'has-danger',
                                'options' => [
                                    'class' => 'm-login__form m-form',
                                ],
                                'fieldConfig' => [
                                    'template'     => "{input}\n{error}",
                                    'labelOptions' => [
                                        'class' => 'form-group m-form__group'
                                    ],
                                    'inputOptions' => [
                                        'class' => 'form-control m-input'
                                    ],
                                    'errorOptions' => [
                                        'class' => 'form-control-feedback'
                                    ],
                                ],
                            ]);
                        ?>
                        <form class="m-login__form m-form" method="POST">
                            <?php
                            if ($loginForm->loginWith === LoginForm::WITH_EMAIL) {
                                echo $form->field($loginForm, 'email', [
                                    'options' => [
                                        'class' => 'form-group m-form__group',
                                    ],
                                    'inputOptions' => [
                                        'placeholder' => $loginForm->getAttributeLabel('email')
                                    ]
                                ]);
                            } else {
                                echo $form->field($loginForm, 'username', [
                                    'options' => [
                                        'class' => 'form-group m-form__group',
                                    ],
                                    'inputOptions' => [
                                        'class' => 'form-control m-input',
                                        'placeholder' => $loginForm->getAttributeLabel('username')
                                    ]
                                ]);
                            }

                            echo $form->field($loginForm, 'password', [
                                'options' => [
                                    'class' => 'form-group m-form__group',
                                ],
                                'inputOptions' => [
                                    'class' => 'form-control m-input m-login__form-input--last',
                                    'placeholder' => $loginForm->getAttributeLabel('password')
                                ]
                            ])->passwordInput();
                            ?>

                                        <input type="checkbox" name="remember"> Remember me

                                <?php if ($loginForm->enableForgotPassword): ?>

                                    <a href="<?= Url::to($loginForm->forgotPasswordUrl) ?>" class="m-link">
                                        Forget Password ?

                                <?php endif; ?>

                                <button type="submit" class="btn btn-focus m-btn m-btn--pill m-btn--custom m-btn--air">
                                    Sign In
                                </button>

                        <?php ActiveForm::end(); ?>

            <?php if ($loginForm->enableRegister): ?>

                        Don't have an account yet ?

                    <a href="<?= Url::to($loginForm->registerUrl) ?>" class="m-link m-link--focus m-login__account-link">
                        Sign Up

            <?php endif; ?>

    <div class="m-grid__item m-grid__item--fluid m-grid m-grid--center m-grid--hor m-grid__item--order-tablet-and-mobile-1 m-login__content"
        style="background-image: url(<?= $media->baseUrl . "/img/bg/bg-4.jpg" ?>)">

                Join Our Community

                Lorem ipsum dolor sit amet, coectetuer adipiscing

                elit sed diam nonummy et nibh euismod


text:
import os
import re

from mitmproxy import exceptions
from mitmproxy import flowfilter
from mitmproxy import ctx

def parse_hook(s):
    """
        Returns a (pattern, regex, replacement) tuple.

        The general form for a replacement hook is as follows:

            /patt/regex/replacement

        The first character specifies the separator. Example:

            :~q:foo:bar

        If only two clauses are specified, the pattern is set to match
        universally (i.e. ".*"). Example:

            /foo/bar/

        Clauses are parsed from left to right. Extra separators are taken to be
        part of the final clause. For instance, the replacement clause below is
        "foo/bar/":

            /one/two/foo/bar/
    """
    sep, rem = s[0], s[1:]
    parts = rem.split(sep, 2)
    if len(parts) == 2:
        patt = ".*"
        a, b = parts
    elif len(parts) == 3:
        patt, a, b = parts
    else:
        raise exceptions.OptionsError(
            "Invalid replacement specifier: %s" % s
        )
    return patt, a, b

class Replace:
    def __init__(self):
        self.lst = []

    def configure(self, updated):
        """
            .replacements is a list of tuples (fpat, rex, s):

            fpatt: a string specifying a filter pattern.
            rex: a regular expression, as string.
            s: the replacement string
        """
        if "replacements" in updated:
            lst = []
            for rep in ctx.options.replacements:
                fpatt, rex, s = parse_hook(rep)

                flt = flowfilter.parse(fpatt)
                if not flt:
                    raise exceptions.OptionsError(
                        "Invalid filter pattern: %s" % fpatt
                    )
                try:
                    # We should ideally escape here before trying to compile
                    re.compile(rex)
                except re.error as e:
                    raise exceptions.OptionsError(
                        "Invalid regular expression: %s - %s" % (rex, str(e))
                    )
                if s.startswith("@") and not os.path.isfile(s[1:]):
                    raise exceptions.OptionsError(
                        "Invalid file path: {}".format(s[1:])
                    )
                lst.append((rex, s, flt))
            self.lst = lst

    def execute(self, f):
        for rex, s, flt in self.lst:
            if flt(f):
                if f.response:
                    self.replace(f.response, rex, s)
                else:
                    self.replace(f.request, rex, s)

    def request(self, flow):
        if not flow.reply.has_message:
            self.execute(flow)

    def response(self, flow):
        if not flow.reply.has_message:
            self.execute(flow)

    def replace(self, obj, rex, s):
        if s.startswith("@"):
            s = os.path.expanduser(s[1:])
            try:
                with open(s, "rb") as f:
                    s = f.read()
            except IOError:
                ctx.log.warn("Could not read replacement file: %s" % s)
                return
        obj.replace(rex, s, flags=re.DOTALL)


text:
namespace Confocal.Data.Migrations {
    using System;
    using System.Data.Entity.Migrations;

    public partial class AddTalkReactionMetadata : DbMigration {
        public override void Up() {
            AddColumn("dbo.TalkReaction", "Submitted", c => c.DateTimeOffset(precision: 7));
            AddColumn("dbo.TalkReaction", "UserAgent", c => c.String());
        }

        public override void Down() {
            DropColumn("dbo.TalkReaction", "UserAgent");
            DropColumn("dbo.TalkReaction", "Submitted");
        }
    }
}


text:
define([
        './Cartesian2',
        './Cartesian3',
        './Check',
        './DeveloperError',
        './Math'
    ], function(
        Cartesian2,
        Cartesian3,
        Check,
        DeveloperError,
        CesiumMath) {
    'use strict';

    /**
     * Attribute compression and decompression functions.
     *
     * @exports AttributeCompression
     *
     * @private
     */
    var AttributeCompression = {};

    /**
     * Encodes a normalized vector into 2 SNORM values in the range of [0-rangeMax] following the 'oct' encoding.
     *
     * Oct encoding is a compact representation of unit length vectors.
     * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
     * Cigolle et al 2014: {@link http://jcgt.org/published/0003/02/01/}
     *
     * @param {Cartesian3} vector The normalized vector to be compressed into 2 component 'oct' encoding.
     * @param {Cartesian2} result The 2 component oct-encoded unit length vector.
     * @param {Number} rangeMax The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits.
     * @returns {Cartesian2} The 2 component oct-encoded unit length vector.
     *
     * @exception {DeveloperError} vector must be normalized.
     *
     * @see AttributeCompression.octDecodeInRange
     */
    AttributeCompression.octEncodeInRange = function(vector, rangeMax, result) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('vector', vector);
        Check.defined('result', result);
        var magSquared = Cartesian3.magnitudeSquared(vector);
        if (Math.abs(magSquared - 1.0) > CesiumMath.EPSILON6) {
            throw new DeveloperError('vector must be normalized.');
        }
        //>>includeEnd('debug');

        result.x = vector.x / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));
        result.y = vector.y / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));
        if (vector.z < 0) {
            var x = result.x;
            var y = result.y;
            result.x = (1.0 - Math.abs(y)) * CesiumMath.signNotZero(x);
            result.y = (1.0 - Math.abs(x)) * CesiumMath.signNotZero(y);
        }

        result.x = CesiumMath.toSNorm(result.x, rangeMax);
        result.y = CesiumMath.toSNorm(result.y, rangeMax);

        return result;
    };

    /**
     * Encodes a normalized vector into 2 SNORM values in the range of [0-255] following the 'oct' encoding.
     *
     * @param {Cartesian3} vector The normalized vector to be compressed into 2 byte 'oct' encoding.
     * @param {Cartesian2} result The 2 byte oct-encoded unit length vector.
     * @returns {Cartesian2} The 2 byte oct-encoded unit length vector.
     *
     * @exception {DeveloperError} vector must be normalized.
     *
     * @see AttributeCompression.octEncodeInRange
     * @see AttributeCompression.octDecode
     */
    AttributeCompression.octEncode = function(vector, result) {
        return AttributeCompression.octEncodeInRange(vector, 255, result);
    };

    /**
     * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component vector.
     *
     * @param {Number} x The x component of the oct-encoded unit length vector.
     * @param {Number} y The y component of the oct-encoded unit length vector.
     * @param {Number} rangeMax The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits.
     * @param {Cartesian3} result The decoded and normalized vector
     * @returns {Cartesian3} The decoded and normalized vector.
     *
     * @exception {DeveloperError} x and y must be an unsigned normalized integer between 0 and rangeMax.
     *
     * @see AttributeCompression.octEncodeInRange
     */
    AttributeCompression.octDecodeInRange = function(x, y, rangeMax, result) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('result', result);
        if (x < 0 || x > rangeMax || y < 0 || y > rangeMax) {
            throw new DeveloperError('x and y must be a signed normalized integer between 0 and ' + rangeMax);
        }
        //>>includeEnd('debug');

        result.x = CesiumMath.fromSNorm(x, rangeMax);
        result.y = CesiumMath.fromSNorm(y, rangeMax);
        result.z = 1.0 - (Math.abs(result.x) + Math.abs(result.y));

        if (result.z < 0.0)
        {
            var oldVX = result.x;
            result.x = (1.0 - Math.abs(result.y)) * CesiumMath.signNotZero(oldVX);
            result.y = (1.0 - Math.abs(oldVX)) * CesiumMath.signNotZero(result.y);
        }

        return Cartesian3.normalize(result, result);
    };

    /**
     * Decodes a unit-length vector in 2 byte 'oct' encoding to a normalized 3-component vector.
     *
     * @param {Number} x The x component of the oct-encoded unit length vector.
     * @param {Number} y The y component of the oct-encoded unit length vector.
     * @param {Cartesian3} result The decoded and normalized vector.
     * @returns {Cartesian3} The decoded and normalized vector.
     *
     * @exception {DeveloperError} x and y must be an unsigned normalized integer between 0 and 255.
     *
     * @see AttributeCompression.octDecodeInRange
     */
    AttributeCompression.octDecode = function(x, y, result) {
        return AttributeCompression.octDecodeInRange(x, y, 255, result);
    };

    /**
     * Packs an oct encoded vector into a single floating-point number.
     *
     * @param {Cartesian2} encoded The oct encoded vector.
     * @returns {Number} The oct encoded vector packed into a single float.
     *
     */
    AttributeCompression.octPackFloat = function(encoded) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('encoded', encoded);
        //>>includeEnd('debug');
        return 256.0 * encoded.x + encoded.y;
    };

    var scratchEncodeCart2 = new Cartesian2();

    /**
     * Encodes a normalized vector into 2 SNORM values in the range of [0-255] following the 'oct' encoding and
     * stores those values in a single float-point number.
     *
     * @param {Cartesian3} vector The normalized vector to be compressed into 2 byte 'oct' encoding.
     * @returns {Number} The 2 byte oct-encoded unit length vector.
     *
     * @exception {DeveloperError} vector must be normalized.
     */
    AttributeCompression.octEncodeFloat = function(vector) {
        AttributeCompression.octEncode(vector, scratchEncodeCart2);
        return AttributeCompression.octPackFloat(scratchEncodeCart2);
    };

    /**
     * Decodes a unit-length vector in 'oct' encoding packed in a floating-point number to a normalized 3-component vector.
     *
     * @param {Number} value The oct-encoded unit length vector stored as a single floating-point number.
     * @param {Cartesian3} result The decoded and normalized vector
     * @returns {Cartesian3} The decoded and normalized vector.
     *
     */
    AttributeCompression.octDecodeFloat = function(value, result) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('value', value);
        //>>includeEnd('debug');

        var temp = value / 256.0;
        var x = Math.floor(temp);
        var y = (temp - x) * 256.0;

        return AttributeCompression.octDecode(x, y, result);
    };

    /**
     * Encodes three normalized vectors into 6 SNORM values in the range of [0-255] following the 'oct' encoding and
     * packs those into two floating-point numbers.
     *
     * @param {Cartesian3} v1 A normalized vector to be compressed.
     * @param {Cartesian3} v2 A normalized vector to be compressed.
     * @param {Cartesian3} v3 A normalized vector to be compressed.
     * @param {Cartesian2} result The 'oct' encoded vectors packed into two floating-point numbers.
     * @returns {Cartesian2} The 'oct' encoded vectors packed into two floating-point numbers.
     *
     */
    AttributeCompression.octPack = function(v1, v2, v3, result) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('v1', v1);
        Check.defined('v2', v2);
        Check.defined('v3', v3);
        Check.defined('result', result);
        //>>includeEnd('debug');

        var encoded1 = AttributeCompression.octEncodeFloat(v1);
        var encoded2 = AttributeCompression.octEncodeFloat(v2);

        var encoded3 = AttributeCompression.octEncode(v3, scratchEncodeCart2);
        result.x = 65536.0 * encoded3.x + encoded1;
        result.y = 65536.0 * encoded3.y + encoded2;
        return result;
    };

    /**
     * Decodes three unit-length vectors in 'oct' encoding packed into a floating-point number to a normalized 3-component vector.
     *
     * @param {Cartesian2} packed The three oct-encoded unit length vectors stored as two floating-point number.
     * @param {Cartesian3} v1 One decoded and normalized vector.
     * @param {Cartesian3} v2 One decoded and normalized vector.
     * @param {Cartesian3} v3 One decoded and normalized vector.
     */
    AttributeCompression.octUnpack = function(packed, v1, v2, v3) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('packed', packed);
        Check.defined('v1', v1);
        Check.defined('v2', v2);
        Check.defined('v3', v3);
        //>>includeEnd('debug');

        var temp = packed.x / 65536.0;
        var x = Math.floor(temp);
        var encodedFloat1 = (temp - x) * 65536.0;

        temp = packed.y / 65536.0;
        var y = Math.floor(temp);
        var encodedFloat2 = (temp - y) * 65536.0;

        AttributeCompression.octDecodeFloat(encodedFloat1, v1);
        AttributeCompression.octDecodeFloat(encodedFloat2, v2);
        AttributeCompression.octDecode(x, y, v3);
    };

    /**
     * Pack texture coordinates into a single float. The texture coordinates will only preserve 12 bits of precision.
     *
     * @param {Cartesian2} textureCoordinates The texture coordinates to compress.  Both coordinates must be in the range 0.0-1.0.
     * @returns {Number} The packed texture coordinates.
     *
     */
    AttributeCompression.compressTextureCoordinates = function(textureCoordinates) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('textureCoordinates', textureCoordinates);
        //>>includeEnd('debug');

        // Move x and y to the range 0-4095;
        var x = (textureCoordinates.x * 4095.0) | 0;
        var y = (textureCoordinates.y * 4095.0) | 0;
        return 4096.0 * x + y;
    };

    /**
     * Decompresses texture coordinates that were packed into a single float.
     *
     * @param {Number} compressed The compressed texture coordinates.
     * @param {Cartesian2} result The decompressed texture coordinates.
     * @returns {Cartesian2} The modified result parameter.
     *
     */
    AttributeCompression.decompressTextureCoordinates = function(compressed, result) {
        //>>includeStart('debug', pragmas.debug);
        Check.defined('compressed', compressed);
        Check.defined('result', result);
        //>>includeEnd('debug');

        var temp = compressed / 4096.0;
        var xZeroTo4095 = Math.floor(temp);
        result.x = xZeroTo4095 / 4095.0;
        result.y = (compressed - xZeroTo4095 * 4096) / 4095;
        return result;
    };

    return AttributeCompression;
});


text:
package sfs2x.extensions.games.spacewar.reqhandlers;

import sfs2x.extensions.games.spacewar.SpaceWarRoomExtension;
import sfs2x.extensions.games.spacewar.core.Game;

import com.smartfoxserver.v2.annotations.Instantiation;
import com.smartfoxserver.v2.annotations.MultiHandler;
import com.smartfoxserver.v2.entities.User;
import com.smartfoxserver.v2.entities.data.ISFSObject;
import com.smartfoxserver.v2.extensions.BaseClientRequestHandler;

@Instantiation
@MultiHandler
public class ControlRequestHandler extends BaseClientRequestHandler {
	private static final String REQ_ROTATE = "rotate";
	private static final String REQ_THRUST = "thrust";
	private static final String REQ_FIRE = "fire";

	public void handleClientRequest(User sender, ISFSObject params) {
		String requestId = params.getUtfString("__[[REQUEST_ID]]__");

		Game game = ((SpaceWarRoomExtension) getParentExtension()).getGame();
		if (requestId.equals(REQ_ROTATE)) {
			game.rotateStarship(sender.getId(), params.getInt("dir").intValue());
		} else if (requestId.equals(REQ_THRUST)) {
			game.thrustStarship(sender.getId(), params.getBool("go")
					.booleanValue());
		} else if (requestId.equals(REQ_FIRE)) {
			int weaponNum = params.getInt("wnum").intValue();
			((SpaceWarRoomExtension) getParentExtension()).fireWeapon(sender,
					weaponNum);
		}
	}
}