@@ -0,0 +1,55 @@
default.doesnt.match.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non corrisponde al pattern [{3}]
default.invalid.url.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un URL valido
default.invalid.creditCard.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un numero di carta di credito valido
default.invalid.email.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un indirizzo email valido
default.invalid.range.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non rientra nell'intervallo valido da [{3}] a [{4}]
default.invalid.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non rientra nell'intervallo di dimensioni valide da [{3}] a [{4}]
default.invalid.max.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è maggiore di [{3}]
default.invalid.min.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è minore di [{3}]
default.invalid.max.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è maggiore di [{3}]
default.invalid.min.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è minore di [{3}]
default.invalid.validator.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è valida
default.not.inlist.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è contenuta nella lista [{3}]
default.blank.message=La proprietà [{0}] della classe [{1}] non può essere vuota
default.not.equal.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non può essere uguale a [{3}]
default.null.message=La proprietà [{0}] della classe [{1}] non può essere null
default.not.unique.message=La proprietà [{0}] della classe [{1}] con valore [{2}] deve essere unica

default.paginate.prev=Precedente
default.paginate.next=Successivo
default.boolean.true=Vero
default.boolean.false=Falso
default.date.format=dd/MM/yyyy HH:mm:ss z
default.number.format=0

default.created.message={0} {1} creato
default.updated.message={0} {1} aggiornato
default.deleted.message={0} {1} eliminato
default.not.deleted.message={0} {1} non può essere eliminato
default.not.found.message={0} non trovato con id {1}
default.optimistic.locking.failure=Un altro utente ha aggiornato questo {0} mentre si era in modifica

default.home.label=Home
default.list.label={0} Elenco
default.add.label=Aggiungi {0}
default.new.label=Nuovo {0}
default.create.label=Crea {0}
default.show.label=Mostra {0}
default.edit.label=Modifica {0}

default.button.create.label=Crea
default.button.edit.label=Modifica
default.button.update.label=Aggiorna
default.button.delete.label=Elimina
default.button.delete.confirm.message=Si è sicuri?

# Data binding errors. Usa "typeMismatch.$className.$propertyName per la personalizzazione (es typeMismatch.Book.author)
typeMismatch.java.net.URL=La proprietà {0} deve essere un URL valido
typeMismatch.java.net.URI=La proprietà {0} deve essere un URI valido
typeMismatch.java.util.Date=La proprietà {0} deve essere una data valida
typeMismatch.java.lang.Double=La proprietà {0} deve essere un numero valido
typeMismatch.java.lang.Integer=La proprietà {0} deve essere un numero valido
typeMismatch.java.lang.Long=La proprietà {0} deve essere un numero valido
typeMismatch.java.lang.Short=La proprietà {0} deve essere un numero valido
typeMismatch.java.math.BigDecimal=La proprietà {0} deve essere un numero valido
typeMismatch.java.math.BigInteger=La proprietà {0} deve essere un numero valido
@@ -0,0 +1,55 @@
default.doesnt.match.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]パターンと一致していません。
default.invalid.url.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なURLではありません。
default.invalid.creditCard.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なクレジットカード番号ではありません。
default.invalid.email.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なメールアドレスではありません。
default.invalid.range.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]範囲内を指定してください。
default.invalid.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]以内を指定してください。
default.invalid.max.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最大値[{3}]より大きいです。
default.invalid.min.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最小値[{3}]より小さいです。
default.invalid.max.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最大値[{3}]より大きいです。
default.invalid.min.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最小値[{3}]より小さいです。
default.invalid.validator.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、カスタムバリデーションを通過できません。
default.not.inlist.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]リスト内に存在しません。
default.blank.message=[{1}]クラスのプロパティ[{0}]の空白は許可されません。
default.not.equal.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]と同等ではありません。
default.null.message=[{1}]クラスのプロパティ[{0}]にnullは許可されません。
default.not.unique.message=クラス[{1}]プロパティ[{0}]の値[{2}]は既に使用されています。

default.paginate.prev=戻る
default.paginate.next=次へ
default.boolean.true=はい
default.boolean.false=いいえ
default.date.format=yyyy/MM/dd HH:mm:ss z
default.number.format=0

default.created.message={0}(id:{1})を作成しました。
default.updated.message={0}(id:{1})を更新しました。
default.deleted.message={0}(id:{1})を削除しました。
default.not.deleted.message={0}(id:{1})は削除できませんでした。
default.not.found.message={0}(id:{1})は見つかりませんでした。
default.optimistic.locking.failure=この{0}は編集中に他のユーザによって先に更新されています。

default.home.label=ホーム
default.list.label={0}リスト
default.add.label={0}を追加
default.new.label={0}を新規作成
default.create.label={0}を作成
default.show.label={0}詳細
default.edit.label={0}を編集

default.button.create.label=作成
default.button.edit.label=編集
default.button.update.label=更新
default.button.delete.label=削除
default.button.delete.confirm.message=本当に削除してよろしいですか?

# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL={0}は有効なURLでなければなりません。
typeMismatch.java.net.URI={0}は有効なURIでなければなりません。
typeMismatch.java.util.Date={0}は有効な日付でなければなりません。
typeMismatch.java.lang.Double={0}は有効な数値でなければなりません。
typeMismatch.java.lang.Integer={0}は有効な数値でなければなりません。
typeMismatch.java.lang.Long={0}は有効な数値でなければなりません。
typeMismatch.java.lang.Short={0}は有効な数値でなければなりません。
typeMismatch.java.math.BigDecimal={0}は有効な数値でなければなりません。
typeMismatch.java.math.BigInteger={0}は有効な数値でなければなりません。
@@ -0,0 +1,56 @@
default.doesnt.match.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overholder ikke mønsteret [{3}]
default.invalid.url.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke en gyldig URL
default.invalid.creditCard.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke et gyldig kredittkortnummer
default.invalid.email.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke en gyldig epostadresse
default.invalid.range.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke innenfor intervallet [{3}] til [{4}]
default.invalid.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke innenfor intervallet [{3}] til [{4}]
default.invalid.max.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overstiger maksimumsverdien på [{3}]
default.invalid.min.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er under minimumsverdien på [{3}]
default.invalid.max.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overstiger maksimumslengden på [{3}]
default.invalid.min.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er kortere enn minimumslengden på [{3}]
default.invalid.validator.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overholder ikke den brukerdefinerte valideringen
default.not.inlist.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] finnes ikke i listen [{3}]
default.blank.message=Feltet [{0}] i klassen [{1}] kan ikke være tom
default.not.equal.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] kan ikke være [{3}]
default.null.message=Feltet [{0}] i klassen [{1}] kan ikke være null
default.not.unique.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] må være unik

default.paginate.prev=Forrige
default.paginate.next=Neste
default.boolean.true=Ja
default.boolean.false=Nei
default.date.format=dd.MM.yyyy HH:mm:ss z
default.number.format=0

default.created.message={0} {1} opprettet
default.updated.message={0} {1} oppdatert
default.deleted.message={0} {1} slettet
default.not.deleted.message={0} {1} kunne ikke slettes
default.not.found.message={0} med id {1} ble ikke funnet
default.optimistic.locking.failure=En annen bruker har oppdatert denne {0} mens du redigerte

default.home.label=Hjem
default.list.label={0}liste
default.add.label=Legg til {0}
default.new.label=Ny {0}
default.create.label=Opprett {0}
default.show.label=Vis {0}
default.edit.label=Endre {0}

default.button.create.label=Opprett
default.button.edit.label=Endre
default.button.update.label=Oppdater
default.button.delete.label=Slett
default.button.delete.confirm.message=Er du sikker?

# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Feltet {0} må være en gyldig URL
typeMismatch.java.net.URI=Feltet {0} må være en gyldig URI
typeMismatch.java.util.Date=Feltet {0} må være en gyldig dato
typeMismatch.java.lang.Double=Feltet {0} må være et gyldig tall
typeMismatch.java.lang.Integer=Feltet {0} må være et gyldig heltall
typeMismatch.java.lang.Long=Feltet {0} må være et gyldig heltall
typeMismatch.java.lang.Short=Feltet {0} må være et gyldig heltall
typeMismatch.java.math.BigDecimal=Feltet {0} må være et gyldig tall
typeMismatch.java.math.BigInteger=Feltet {0} må være et gyldig heltall

@@ -0,0 +1,55 @@
default.doesnt.match.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] komt niet overeen met het vereiste patroon [{3}]
default.invalid.url.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldige URL
default.invalid.creditCard.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldig credit card nummer
default.invalid.email.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldig e-mailadres
default.invalid.range.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] valt niet in de geldige waardenreeks van [{3}] tot [{4}]
default.invalid.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] valt niet in de geldige grootte van [{3}] tot [{4}]
default.invalid.max.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumwaarde [{3}]
default.invalid.min.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan de minimumwaarde [{3}]
default.invalid.max.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumgrootte van [{3}]
default.invalid.min.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan minimumgrootte van [{3}]
default.invalid.validator.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is niet geldig
default.not.inlist.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] komt niet voor in de lijst [{3}]
default.blank.message=Attribuut [{0}] van entiteit [{1}] mag niet leeg zijn
default.not.equal.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] mag niet gelijk zijn aan [{3}]
default.null.message=Attribuut [{0}] van entiteit [{1}] mag niet leeg zijn
default.not.unique.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] moet uniek zijn

default.paginate.prev=Vorige
default.paginate.next=Volgende
default.boolean.true=Ja
default.boolean.false=Nee
default.date.format=dd-MM-yyyy HH:mm:ss z
default.number.format=0

default.created.message={0} {1} ingevoerd
default.updated.message={0} {1} gewijzigd
default.deleted.message={0} {1} verwijderd
default.not.deleted.message={0} {1} kon niet worden verwijderd
default.not.found.message={0} met id {1} kon niet worden gevonden
default.optimistic.locking.failure=Een andere gebruiker heeft deze {0} al gewijzigd

default.home.label=Home
default.list.label={0} Overzicht
default.add.label=Toevoegen {0}
default.new.label=Invoeren {0}
default.create.label=Invoeren {0}
default.show.label=Details {0}
default.edit.label=Wijzigen {0}

default.button.create.label=Invoeren
default.button.edit.label=Wijzigen
default.button.update.label=Opslaan
default.button.delete.label=Verwijderen
default.button.delete.confirm.message=Weet je het zeker?

# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Attribuut {0} is geen geldige URL
typeMismatch.java.net.URI=Attribuut {0} is geen geldige URI
typeMismatch.java.util.Date=Attribuut {0} is geen geldige datum
typeMismatch.java.lang.Double=Attribuut {0} is geen geldig nummer
typeMismatch.java.lang.Integer=Attribuut {0} is geen geldig nummer
typeMismatch.java.lang.Long=Attribuut {0} is geen geldig nummer
typeMismatch.java.lang.Short=Attribuut {0} is geen geldig nummer
typeMismatch.java.math.BigDecimal=Attribuut {0} is geen geldig nummer
typeMismatch.java.math.BigInteger=Attribuut {0} is geen geldig nummer
@@ -0,0 +1,59 @@
#
# Translated by Matthias Hryniszak - padcom@gmail.com
#

default.doesnt.match.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie pasuje do wymaganego wzorca [{3}]
default.invalid.url.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest niepoprawnym adresem URL
default.invalid.creditCard.message=Właściwość [{0}] klasy [{1}] with value [{2}] nie jest poprawnym numerem karty kredytowej
default.invalid.email.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie jest poprawnym adresem e-mail
default.invalid.range.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się zakładanym zakresie od [{3}] do [{4}]
default.invalid.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się w zakładanym zakresie rozmiarów od [{3}] do [{4}]
default.invalid.max.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] przekracza maksymalną wartość [{3}]
default.invalid.min.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest mniejsza niż minimalna wartość [{3}]
default.invalid.max.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] przekracza maksymalny rozmiar [{3}]
default.invalid.min.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest mniejsza niż minimalny rozmiar [{3}]
default.invalid.validator.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie spełnia założonych niestandardowych warunków
default.not.inlist.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się w liście [{3}]
default.blank.message=Właściwość [{0}] klasy [{1}] nie może być pusta
default.not.equal.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie może równać się [{3}]
default.null.message=Właściwość [{0}] klasy [{1}] nie może być null
default.not.unique.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] musi być unikalna

default.paginate.prev=Poprzedni
default.paginate.next=Następny
default.boolean.true=Prawda
default.boolean.false=Fałsz
default.date.format=yyyy-MM-dd HH:mm:ss z
default.number.format=0

default.created.message=Utworzono {0} {1}
default.updated.message=Zaktualizowano {0} {1}
default.deleted.message=Usunięto {0} {1}
default.not.deleted.message={0} {1} nie mógł zostać usunięty
default.not.found.message=Nie znaleziono {0} o id {1}
default.optimistic.locking.failure=Inny użytkownik zaktualizował ten obiekt {0} w trakcie twoich zmian

default.home.label=Strona domowa
default.list.label=Lista {0}
default.add.label=Dodaj {0}
default.new.label=Utwórz {0}
default.create.label=Utwórz {0}
default.show.label=Pokaż {0}
default.edit.label=Edytuj {0}

default.button.create.label=Utwórz
default.button.edit.label=Edytuj
default.button.update.label=Zaktualizuj
default.button.delete.label=Usuń
default.button.delete.confirm.message=Czy jesteś pewien?

# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Właściwość {0} musi być poprawnym adresem URL
typeMismatch.java.net.URI=Właściwość {0} musi być poprawnym adresem URI
typeMismatch.java.util.Date=Właściwość {0} musi być poprawną datą
typeMismatch.java.lang.Double=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.lang.Integer=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.lang.Long=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.lang.Short=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.math.BigDecimal=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.math.BigInteger=Właściwość {0} musi być poprawnyą liczbą
@@ -0,0 +1,59 @@
#
# Translated by Lucas Teixeira - lucastex@gmail.com
#

default.doesnt.match.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atende ao padrão definido [{3}]
default.invalid.url.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é uma URL válida
default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um número válido de cartão de crédito
default.invalid.email.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um endereço de email válido.
default.invalid.range.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está entre a faixa de valores válida de [{3}] até [{4}]
default.invalid.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está na faixa de tamanho válida de [{3}] até [{4}]
default.invalid.max.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapass o valor máximo [{3}]
default.invalid.min.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o valor mínimo [{3}]
default.invalid.max.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}]
default.invalid.min.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o tamanho mínimo de [{3}]
default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}] não passou na validação
default.not.inlist.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um valor dentre os permitidos na lista [{3}]
default.blank.message=O campo [{0}] da classe [{1}] não pode ficar em branco
default.not.equal.message=O campo [{0}] da classe [{1}] com o valor [{2}] não pode ser igual a [{3}]
default.null.message=O campo [{0}] da classe [{1}] não pode ser vazia
default.not.unique.message=O campo [{0}] da classe [{1}] com o valor [{2}] deve ser único

default.paginate.prev=Anterior
default.paginate.next=Próximo
default.boolean.true=Sim
default.boolean.false=Não
default.date.format=dd/MM/yyyy HH:mm:ss z
default.number.format=0

default.created.message={0} {1} criado
default.updated.message={0} {1} atualizado
default.deleted.message={0} {1} removido
default.not.deleted.message={0} {1} não pode ser removido
default.not.found.message={0} não foi encontrado com id {1}
default.optimistic.locking.failure=Outro usuário atualizou este [{0}] enquanto você tentou salvá-lo

default.home.label=Principal
default.list.label={0} Listagem
default.add.label=Adicionar {0}
default.new.label=Novo {0}
default.create.label=Criar {0}
default.show.label=Ver {0}
default.edit.label=Editar {0}

default.button.create.label=Criar
default.button.edit.label=Editar
default.button.update.label=Alterar
default.button.delete.label=Remover
default.button.delete.confirm.message=Tem certeza?

# Mensagens de erro em atribuição de valores. Use "typeMismatch.$className.$propertyName" para customizar (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=O campo {0} deve ser uma URL válida.
typeMismatch.java.net.URI=O campo {0} deve ser uma URI válida.
typeMismatch.java.util.Date=O campo {0} deve ser uma data válida
typeMismatch.java.lang.Double=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Integer=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Long=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Short=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido.
@@ -0,0 +1,34 @@
#
# translation by miguel.ping@gmail.com, based on pt_BR translation by Lucas Teixeira - lucastex@gmail.com
#

default.doesnt.match.message=O campo [{0}] da classe [{1}] com o valor [{2}] não corresponde ao padrão definido [{3}]
default.invalid.url.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um URL válido
default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um número válido de cartão de crédito
default.invalid.email.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um endereço de email válido.
default.invalid.range.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está dentro dos limites de valores válidos de [{3}] a [{4}]
default.invalid.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] está fora dos limites de tamanho válido de [{3}] a [{4}]
default.invalid.max.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o valor máximo [{3}]
default.invalid.min.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o valor mínimo [{3}]
default.invalid.max.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}]
default.invalid.min.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o tamanho mínimo de [{3}]
default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}] não passou na validação
default.not.inlist.message=O campo [{0}] da classe [{1}] com o valor [{2}] não se encontra nos valores permitidos da lista [{3}]
default.blank.message=O campo [{0}] da classe [{1}] não pode ser vazio
default.not.equal.message=O campo [{0}] da classe [{1}] com o valor [{2}] não pode ser igual a [{3}]
default.null.message=O campo [{0}] da classe [{1}] não pode ser vazio
default.not.unique.message=O campo [{0}] da classe [{1}] com o valor [{2}] deve ser único

default.paginate.prev=Anterior
default.paginate.next=Próximo

# Mensagens de erro em atribuição de valores. Use "typeMismatch.$className.$propertyName" para personalizar(eg typeMismatch.Book.author)
typeMismatch.java.net.URL=O campo {0} deve ser um URL válido.
typeMismatch.java.net.URI=O campo {0} deve ser um URI válido.
typeMismatch.java.util.Date=O campo {0} deve ser uma data válida
typeMismatch.java.lang.Double=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Integer=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Long=O campo {0} deve ser um número valido.
typeMismatch.java.lang.Short=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido.
@@ -0,0 +1,31 @@
default.doesnt.match.message=Значение [{2}] поля [{0}] класса [{1}] не соответствует образцу [{3}]
default.invalid.url.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым URL-адресом
default.invalid.creditCard.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым номером кредитной карты
default.invalid.email.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым e-mail адресом
default.invalid.range.message=Значение [{2}] поля [{0}] класса [{1}] не попадает в допустимый интервал от [{3}] до [{4}]
default.invalid.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) не попадает в допустимый интервал от [{3}] до [{4}]
default.invalid.max.message=Значение [{2}] поля [{0}] класса [{1}] больше чем максимально допустимое значение [{3}]
default.invalid.min.message=Значение [{2}] поля [{0}] класса [{1}] меньше чем минимально допустимое значение [{3}]
default.invalid.max.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) больше чем максимально допустимый размер [{3}]
default.invalid.min.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) меньше чем минимально допустимый размер [{3}]
default.invalid.validator.message=Значение [{2}] поля [{0}] класса [{1}] не допустимо
default.not.inlist.message=Значение [{2}] поля [{0}] класса [{1}] не попадает в список допустимых значений [{3}]
default.blank.message=Поле [{0}] класса [{1}] не может быть пустым
default.not.equal.message=Значение [{2}] поля [{0}] класса [{1}] не может быть равно [{3}]
default.null.message=Поле [{0}] класса [{1}] не может иметь значение null
default.not.unique.message=Значение [{2}] поля [{0}] класса [{1}] должно быть уникальным

default.paginate.prev=Предыдушая страница
default.paginate.next=Следующая страница

# Ошибки при присвоении данных. Для точной настройки для полей классов используйте
# формат "typeMismatch.$className.$propertyName" (например, typeMismatch.Book.author)
typeMismatch.java.net.URL=Значение поля {0} не является допустимым URL
typeMismatch.java.net.URI=Значение поля {0} не является допустимым URI
typeMismatch.java.util.Date=Значение поля {0} не является допустимой датой
typeMismatch.java.lang.Double=Значение поля {0} не является допустимым числом
typeMismatch.java.lang.Integer=Значение поля {0} не является допустимым числом
typeMismatch.java.lang.Long=Значение поля {0} не является допустимым числом
typeMismatch.java.lang.Short=Значение поля {0} не является допустимым числом
typeMismatch.java.math.BigDecimal=Значение поля {0} не является допустимым числом
typeMismatch.java.math.BigInteger=Значение поля {0} не является допустимым числом
@@ -0,0 +1,55 @@
default.doesnt.match.message=Attributet [{0}] för klassen [{1}] med värde [{2}] matchar inte mot uttrycket [{3}]
default.invalid.url.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte en giltig URL
default.invalid.creditCard.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte ett giltigt kreditkortsnummer
default.invalid.email.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte en giltig e-postadress
default.invalid.range.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte inom intervallet [{3}] till [{4}]
default.invalid.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] har en storlek som inte är inom [{3}] till [{4}]
default.invalid.max.message=Attributet [{0}] för klassen [{1}] med värde [{2}] överskrider maxvärdet [{3}]
default.invalid.min.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är mindre än minimivärdet [{3}]
default.invalid.max.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] överskrider maxstorleken [{3}]
default.invalid.min.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är mindre än minimistorleken [{3}]
default.invalid.validator.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte giltigt enligt anpassad regel
default.not.inlist.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte giltigt, måste vara ett av [{3}]
default.blank.message=Attributet [{0}] för klassen [{1}] får inte vara tomt
default.not.equal.message=Attributet [{0}] för klassen [{1}] med värde [{2}] får inte vara lika med [{3}]
default.null.message=Attributet [{0}] för klassen [{1}] får inte vara tomt
default.not.unique.message=Attributet [{0}] för klassen [{1}] med värde [{2}] måste vara unikt

default.paginate.prev=Föregående
default.paginate.next=Nästa
default.boolean.true=Sant
default.boolean.false=Falskt
default.date.format=yyyy-MM-dd HH:mm:ss z
default.number.format=0

default.created.message={0} {1} skapades
default.updated.message={0} {1} uppdaterades
default.deleted.message={0} {1} borttagen
default.not.deleted.message={0} {1} kunde inte tas bort
default.not.found.message={0} med id {1} kunde inte hittas
default.optimistic.locking.failure=En annan användare har uppdaterat det här {0} objektet medan du redigerade det

default.home.label=Hem
default.list.label= {0} - Lista
default.add.label=Lägg till {0}
default.new.label=Skapa {0}
default.create.label=Skapa {0}
default.show.label=Visa {0}
default.edit.label=Ändra {0}

default.button.create.label=Skapa
default.button.edit.label=Ändra
default.button.update.label=Uppdatera
default.button.delete.label=Ta bort
default.button.delete.confirm.message=Är du säker?

# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Värdet för {0} måste vara en giltig URL
typeMismatch.java.net.URI=Värdet för {0} måste vara en giltig URI
typeMismatch.java.util.Date=Värdet {0} måste vara ett giltigt datum
typeMismatch.java.lang.Double=Värdet {0} måste vara ett giltigt nummer
typeMismatch.java.lang.Integer=Värdet {0} måste vara ett giltigt heltal
typeMismatch.java.lang.Long=Värdet {0} måste vara ett giltigt heltal
typeMismatch.java.lang.Short=Värdet {0} måste vara ett giltigt heltal
typeMismatch.java.math.BigDecimal=Värdet {0} måste vara ett giltigt nummer
typeMismatch.java.math.BigInteger=Värdet {0} måste vara ett giltigt heltal
@@ -0,0 +1,55 @@
default.doesnt.match.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบที่กำหนดไว้ใน [{3}]
default.invalid.url.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบ URL
default.invalid.creditCard.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบหมายเลขบัตรเครดิต
default.invalid.email.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบอีเมล์
default.invalid.range.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้มีค่าที่ถูกต้องในช่วงจาก [{3}] ถึง [{4}]
default.invalid.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้มีขนาดที่ถูกต้องในช่วงจาก [{3}] ถึง [{4}]
default.invalid.max.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีค่าเกิดกว่าค่ามากสุด [{3}]
default.invalid.min.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีค่าน้อยกว่าค่าต่ำสุด [{3}]
default.invalid.max.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีขนาดเกินกว่าขนาดมากสุดของ [{3}]
default.invalid.min.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีขนาดต่ำกว่าขนาดต่ำสุดของ [{3}]
default.invalid.validator.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ผ่านการทวนสอบค่าที่ตั้งขึ้น
default.not.inlist.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้อยู่ในรายการต่อไปนี้ [{3}]
default.blank.message=คุณสมบัติ [{0}] ของคลาส [{1}] ไม่สามารถเป็นค่าว่างได้
default.not.equal.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่สามารถเท่ากับ [{3}] ได้
default.null.message=คุณสมบัติ [{0}] ของคลาส [{1}] ไม่สามารถเป็น null ได้
default.not.unique.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] จะต้องไม่ซ้ำ (unique)

default.paginate.prev=ก่อนหน้า
default.paginate.next=ถัดไป
default.boolean.true=จริง
default.boolean.false=เท็จ
default.date.format=dd-MM-yyyy HH:mm:ss z
default.number.format=0

default.created.message=สร้าง {0} {1} เรียบร้อยแล้ว
default.updated.message=ปรับปรุง {0} {1} เรียบร้อยแล้ว
default.deleted.message=ลบ {0} {1} เรียบร้อยแล้ว
default.not.deleted.message=ไม่สามารถลบ {0} {1}
default.not.found.message=ไม่พบ {0} ด้วย id {1} นี้
default.optimistic.locking.failure=มีผู้ใช้ท่านอื่นปรับปรุง {0} ขณะที่คุณกำลังแก้ไขข้อมูลอยู่

default.home.label=หน้าแรก
default.list.label=รายการ {0}
default.add.label=เพิ่ม {0}
default.new.label=สร้าง {0} ใหม่
default.create.label=สร้าง {0}
default.show.label=แสดง {0}
default.edit.label=แก้ไข {0}

default.button.create.label=สร้าง
default.button.edit.label=แก้ไข
default.button.update.label=ปรับปรุง
default.button.delete.label=ลบ
default.button.delete.confirm.message=คุณแน่ใจหรือไม่ ?

# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=คุณสมบัติ '{0}' จะต้องเป็นค่า URL ที่ถูกต้อง
typeMismatch.java.net.URI=คุณสมบัติ '{0}' จะต้องเป็นค่า URI ที่ถูกต้อง
typeMismatch.java.util.Date=คุณสมบัติ '{0}' จะต้องมีค่าเป็นวันที่
typeMismatch.java.lang.Double=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Double
typeMismatch.java.lang.Integer=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Integer
typeMismatch.java.lang.Long=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Long
typeMismatch.java.lang.Short=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Short
typeMismatch.java.math.BigDecimal=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigDecimal
typeMismatch.java.math.BigInteger=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigInteger
@@ -0,0 +1,18 @@
default.blank.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3A\u7A7A
default.doesnt.match.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0E\u5B9A\u4E49\u7684\u6A21\u5F0F [{3}]\u4E0D\u5339\u914D
default.invalid.creditCard.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u4FE1\u7528\u5361\u53F7
default.invalid.email.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740
default.invalid.max.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u6BD4\u6700\u5927\u503C [{3}]\u8FD8\u5927
default.invalid.max.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u6BD4\u6700\u5927\u503C [{3}]\u8FD8\u5927
default.invalid.min.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u6BD4\u6700\u5C0F\u503C [{3}]\u8FD8\u5C0F
default.invalid.min.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u6BD4\u6700\u5C0F\u503C [{3}]\u8FD8\u5C0F
default.invalid.range.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u5728\u5408\u6CD5\u7684\u8303\u56F4\u5185( [{3}] \uFF5E [{4}] )
default.invalid.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u4E0D\u5728\u5408\u6CD5\u7684\u8303\u56F4\u5185( [{3}] \uFF5E [{4}] )
default.invalid.url.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684URL
default.invalid.validator.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u672A\u80FD\u901A\u8FC7\u81EA\u5B9A\u4E49\u7684\u9A8C\u8BC1
default.not.equal.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0E[{3}]\u4E0D\u76F8\u7B49
default.not.inlist.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u5728\u5217\u8868\u7684\u53D6\u503C\u8303\u56F4\u5185
default.not.unique.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u5FC5\u987B\u662F\u552F\u4E00\u7684
default.null.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3Anull
default.paginate.next=\u4E0B\u9875
default.paginate.prev=\u4E0A\u9875
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<title><g:if env="development">Grails Runtime Exception</g:if><g:else>Error</g:else></title>
<meta name="layout" content="main">
<g:if env="development"><asset:stylesheet src="errors.css"/></g:if>
</head>
<body>
<g:if env="development">
<g:renderException exception="${exception}" />
</g:if>
<g:else>
<ul class="errors">
<li>An error has occurred</li>
</ul>
</g:else>
</body>
</html>
@@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta name="layout" content="main"/>
<title>Welcome to Grails</title>
<style type="text/css" media="screen">
#status {
background-color: #eee;
border: .2em solid #fff;
margin: 2em 2em 1em;
padding: 1em;
width: 12em;
float: left;
-moz-box-shadow: 0px 0px 1.25em #ccc;
-webkit-box-shadow: 0px 0px 1.25em #ccc;
box-shadow: 0px 0px 1.25em #ccc;
-moz-border-radius: 0.6em;
-webkit-border-radius: 0.6em;
border-radius: 0.6em;
}
.ie6 #status {
display: inline; /* float double margin fix http://www.positioniseverything.net/explorer/doubled-margin.html */
}
#status ul {
font-size: 0.9em;
list-style-type: none;
margin-bottom: 0.6em;
padding: 0;
}
#status li {
line-height: 1.3;
}
#status h1 {
text-transform: uppercase;
font-size: 1.1em;
margin: 0 0 0.3em;
}
#page-body {
margin: 2em 1em 1.25em 18em;
}
h2 {
margin-top: 1em;
margin-bottom: 0.3em;
font-size: 1em;
}
p {
line-height: 1.5;
margin: 0.25em 0;
}
#controller-list ul {
list-style-position: inside;
}
#controller-list li {
line-height: 1.3;
list-style-position: inside;
margin: 0.25em 0;
}
@media screen and (max-width: 480px) {
#status {
display: none;
}
#page-body {
margin: 0 1em 1em;
}
#page-body h1 {
margin-top: 0;
}
}
</style>
</head>
<body>
<a href="#page-body" class="skip"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
<div id="status" role="complementary">
<h1>Application Status</h1>
<ul>
<li>App version: <g:meta name="app.version"/></li>
<li>Grails version: <g:meta name="app.grails.version"/></li>
<li>Groovy version: ${GroovySystem.getVersion()}</li>
<li>JVM version: ${System.getProperty('java.version')}</li>
<li>Reloading active: ${grails.util.Environment.reloadingAgentEnabled}</li>
<li>Controllers: ${grailsApplication.controllerClasses.size()}</li>
<li>Domains: ${grailsApplication.domainClasses.size()}</li>
<li>Services: ${grailsApplication.serviceClasses.size()}</li>
<li>Tag Libraries: ${grailsApplication.tagLibClasses.size()}</li>
</ul>
<h1>Installed Plugins</h1>
<ul>
<g:each var="plugin" in="${applicationContext.getBean('pluginManager').allPlugins}">
<li>${plugin.name} - ${plugin.version}</li>
</g:each>
</ul>
</div>
<div id="page-body" role="main">
<h1>Welcome to Grails</h1>
<p>Congratulations, you have successfully started your first Grails application! At the moment
this is the default page, feel free to modify it to either redirect to a controller or display whatever
content you may choose. Below is a list of controllers that are currently deployed in this application,
click on each to execute its default action:</p>

<div id="controller-list" role="navigation">
<h2>Available Controllers:</h2>
<ul>
<g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }">
<li class="controller"><g:link controller="${c.logicalPropertyName}">${c.fullName}</g:link></li>
</g:each>
</ul>
</div>
</div>
</body>
</html>
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title><g:layoutTitle default="Grails"/></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="${assetPath(src: 'favicon.ico')}" type="image/x-icon">
<link rel="apple-touch-icon" href="${assetPath(src: 'apple-touch-icon.png')}">
<link rel="apple-touch-icon" sizes="114x114" href="${assetPath(src: 'apple-touch-icon-retina.png')}">
<asset:stylesheet src="application.css"/>
<asset:javascript src="application.js"/>
<g:layoutHead/>
</head>
<body>
<div id="grailsLogo" role="banner"><a href="http://grails.org"><asset:image src="grails_logo.png" alt="Grails"/></a></div>
<g:layoutBody/>
<div class="footer" role="contentinfo"></div>
<div id="spinner" class="spinner" style="display:none;"><g:message code="spinner.alt" default="Loading&hellip;"/></div>
</body>
</html>
@@ -0,0 +1,16 @@
<html>
<head>
<title>Current Projects</title>
</head>
<body>
<table border="1">
<g:each in="${allProjects}" status="i" var="thisProject">
<tr>
<td>${thisProject.name }</td>
<td>${thisProject.description }</td>
<td>${thisProject.dueDate }</td>
</tr>
</g:each>
</table>
</body>
</html>
@@ -0,0 +1,363 @@
##############################################################################
## ##
## Grails JVM Bootstrap for UN*X ##
## ##
##############################################################################

PROGNAME=`basename "$0"`
DIRNAME=`dirname "$0"`

# Use the maximum available, or set MAX_FD != -1 to use that
MAX_FD="maximum"

warn() {
echo "${PROGNAME}: $*"
}

die() {
warn "$*"
exit 1
}

earlyInit() {
return
}
lateInit() {
return
}

GROOVY_STARTUP=~/.groovy/startup
if [ -r "$GROOVY_STARTUP" ]; then
. "$GROOVY_STARTUP"
fi

earlyInit

# OS specific support (must be 'true' or 'false').
cygwin=false;
darwin=false;
mingw=false;
case "`uname`" in
CYGWIN*)
cygwin=true
;;

Darwin*)
darwin=true
;;

MINGW*)
mingw=true
;;
esac

# Attempt to set JAVA_HOME if it's not already set
if [ -z "$JAVA_HOME" ]; then

# Set JAVA_HOME for Darwin
if $darwin; then

[ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] &&
export JAVA_HOME="/Library/Java/Home"

[ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] &&
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home"

fi

fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$GRAILS_HOME" ] &&
GRAILS_HOME=`cygpath --unix "$GRAILS_HOME"`
[ -n "$JAVACMD" ] &&
JAVACMD=`cygpath --unix "$JAVACMD"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CP" ] &&
CP=`cygpath --path --unix "$CP"`
fi

# quick detection of JDK version without JVM startup overhead
CLASSFILE_HEADER_FILE="${JAVA_HOME}/include/classfile_constants.h"
if [ -z "$GRAILS_NO_PERMGEN" -a -f "${CLASSFILE_HEADER_FILE}" ]; then
CLASSFILE_VERSION=`cat "${CLASSFILE_HEADER_FILE}" | grep "#define JVM_CLASSFILE_MAJOR_VERSION" | awk '{ print $3 }' 2> /dev/null`
if [ 0$CLASSFILE_VERSION -ge 52 ]; then
GRAILS_NO_PERMGEN=1
fi
fi

# Remove possible trailing slash (after possible cygwin correction)
GRAILS_HOME=`echo $GRAILS_HOME | sed -e 's|/$||g'`

# Locate GRAILS_HOME if not it is not set
if [ -z "$GRAILS_HOME" -o ! -d "$GRAILS_HOME" ] ; then
# resolve links - $0 may be a link to groovy's home
PRG="$0"

# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done

SAVED="`pwd`"
cd "`dirname \"$PRG\"`/.."
GRAILS_HOME="`pwd -P`"
cd "$SAVED"
fi

# Warn the user if JAVA_HOME and/or GRAILS_HOME are not set.
if [ -z "$JAVA_HOME" ] ; then
die "JAVA_HOME environment variable is not set"
elif [ ! -d "$JAVA_HOME" ] ; then
die "JAVA_HOME is not a directory: $JAVA_HOME"
fi

if [ -z "$GRAILS_HOME" ] ; then
warn "GRAILS_HOME environment variable is not set"
fi

if [ ! -d "$GRAILS_HOME" ] ; then
die "GRAILS_HOME is not a directory: $GRAILS_HOME"
fi

# Use default groovy-conf config
if [ -z "$STARTER_CONF" ]; then
STARTER_CONF="$GRAILS_HOME/conf/groovy-starter.conf"
fi
STARTER_CLASSPATH="wrapper/grails-wrapper-runtime-2.4.4.jar:wrapper:."

# Allow access to Cocoa classes on OS X
if $darwin; then
STARTER_CLASSPATH="$STARTER_CLASSPATH:/System/Library/Java/Support"
fi

# Create the final classpath
# Setting a classpath using the -cp or -classpath option means not to use
# the global classpath. Groovy behaves then the same as the java
# interpreter
if [ -n "$CP" ] ; then
CP="$CP"
elif [ -n "$CLASSPATH" ] ; then
CP="$CLASSPATH"
fi

# Determine the Java command to use to start the JVM
if [ -z "$JAVACMD" ]; then
if [ -n "$JAVA_HOME" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="java"
fi
fi
if [ ! -x "$JAVACMD" ]; then
die "JAVA_HOME is not defined correctly; can not execute: $JAVACMD"
fi

# Increase the maximum file descriptors if we can
if [ "$cygwin" = "false" ]; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ "$MAX_FD_LIMIT" != "unlimited" ]; then
if [ $? -eq 0 ]; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
# use the businessSystem max
MAX_FD="$MAX_FD_LIMIT"
fi

ulimit -n $MAX_FD
if [ $? -ne 0 ]; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
fi

# Fix the cygwin agent issue
AGENT_GRAILS_HOME=$GRAILS_HOME
if $cygwin ; then
[ -n "$GRAILS_HOME" ] &&
AGENT_GRAILS_HOME=`cygpath --windows "$GRAILS_HOME"`
fi

if $mingw ; then
# Converts GRAILS_HOME path to Windows syntax
[ -n "$GRAILS_HOME" ] &&
AGENT_GRAILS_HOME=`cmd //C echo "$GRAILS_HOME"`
fi

if [ -z "$GRAILS_AGENT_CACHE_DIR" ]; then
GRAILS_AGENT_CACHE_DIR=~/.grails/2.4.4/
fi
SPRINGLOADED_PARAMS=profile=grails\;cacheDir=$GRAILS_AGENT_CACHE_DIR
if [ ! -d "$GRAILS_AGENT_CACHE_DIR" ]; then
mkdir -p "$GRAILS_AGENT_CACHE_DIR"
fi

# Process JVM args
AGENT_STRING="-javaagent:wrapper/springloaded-1.2.1.RELEASE.jar -Xverify:none -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=$SPRINGLOADED_PARAMS"
CMD_LINE_ARGS=""
DISABLE_RELOADING=true

while true; do
if [ "$1" = "-cp" ] || [ "$1" = "-classpath" ]; then
CP=$2
shift 2
break
fi

if [ "$1" = "-reloading" ]; then
AGENT=$AGENT_STRING
DISABLE_RELOADING=false
shift
break
fi

if [ "$1" = "-noreloading" ]; then
DISABLE_RELOADING=true
shift
break
fi

if [ "$1" = "-debug" ]; then
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
shift
break
fi

if [ "$1" != -* ]; then
break
fi

CMD_LINE_ARGS="$CMD_LINE_ARGS $1"
shift
done

# Enable agent-based reloading for the 'run-app' command.
if ! $DISABLE_RELOADING; then
for a in "$@"; do
if [ "$a" = "run-app" ]; then
AGENT=$AGENT_STRING
fi
done

if [ $# = 0 ]; then
AGENT=$AGENT_STRING
fi
fi

ARGUMENTS="$CMD_LINE_ARGS $@"

# Setup Profiler
useprofiler=false
if [ "x$PROFILER" != "x" ]; then
if [ -r "$PROFILER" ]; then
. $PROFILER
useprofiler=true
else
die "Profiler file not found: $PROFILER"
fi
fi

# For Darwin, use classes.jar for TOOLS_JAR
TOOLS_JAR="$JAVA_HOME/lib/tools.jar"
if $darwin; then
JAVA_OPTS="-Xdock:name=Grails -Xdock:icon=$GRAILS_HOME/media/icons/grails.icns $JAVA_OPTS"
# TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar"
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
GRAILS_HOME=`cygpath --path --mixed "$GRAILS_HOME"`
JAVA_HOME=`cygpath --path --mixed "$JAVA_HOME"`
STARTER_CONF=`cygpath --path --mixed "$STARTER_CONF"`
if [ "x$CP" != "x" ] ; then
CP=`cygpath --path --mixed "$CP"`
fi
TOOLS_JAR=`cygpath --path --mixed "$TOOLS_JAR"`
STARTER_CLASSPATH=`cygpath --path --mixed "$STARTER_CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GROOVY_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GROOVY_CYGPATTERN)"
fi
# Now convert the arguments
ARGUMENTS=""
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
if [ $CHECK -ne 0 ] ; then
convArg=`cygpath --path --ignore --mixed -- "$arg"`
else
convArg=$arg
fi
ARGUMENTS="$ARGUMENTS $convArg"
done
fi

STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper

lateInit

startGrails() {
CLASS=$1
shift
if [ -n "$GRAILS_OPTS" ]
then
GRAILS_OPTS="$GRAILS_OPTS"
else
GRAILS_OPTS="-server -Xmx768M -Xms64M -Dfile.encoding=UTF-8"
if [ "$GRAILS_NO_PERMGEN" != "1" ]; then
GRAILS_OPTS="$GRAILS_OPTS -XX:PermSize=32m -XX:MaxPermSize=256m"
fi
fi
JAVA_OPTS="$GRAILS_OPTS $JAVA_OPTS $AGENT"
# Start the Profiler or the JVM
if $useprofiler; then
runProfiler
else
if [ $# -eq 0 ] ; then # no argument given
exec "$JAVACMD" $JAVA_OPTS \
-classpath "$STARTER_CLASSPATH" \
-Dgrails.home="$GRAILS_HOME" \
-Dtools.jar="$TOOLS_JAR" \
-Djava.net.preferIPv4Stack=true \
$STARTER_MAIN_CLASS \
--main $CLASS \
--conf "$STARTER_CONF" \
--classpath "$CP"
else
exec "$JAVACMD" $JAVA_OPTS \
-classpath "$STARTER_CLASSPATH" \
-Dgrails.home="$GRAILS_HOME" \
-Dtools.jar="$TOOLS_JAR" \
-Djava.net.preferIPv4Stack=true \
$STARTER_MAIN_CLASS \
--main $CLASS \
--conf "$STARTER_CONF" \
--classpath "$CP" \
"${ARGUMENTS}"
fi
fi
}

startGrails $STARTER_MAIN_CLASS "$@"
@@ -0,0 +1,186 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem ##
@rem Grails JVM Bootstrap for Windows ##
@rem ##
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set CLASS=org.grails.wrapper.GrailsWrapper

if exist "%USERPROFILE%/.groovy/preinit.bat" call "%USERPROFILE%/.groovy/preinit.bat"

@rem Determine the command interpreter to execute the "CD" later
set COMMAND_COM="cmd.exe"
if exist "%SystemRoot%\system32\cmd.exe" set COMMAND_COM="%SystemRoot%\system32\cmd.exe"
if exist "%SystemRoot%\command.com" set COMMAND_COM="%SystemRoot%\command.com"

@rem Use explicit find.exe to prevent cygwin and others find.exe from being used
set FIND_EXE="find.exe"
if exist "%SystemRoot%\system32\find.exe" set FIND_EXE="%SystemRoot%\system32\find.exe"
if exist "%SystemRoot%\command\find.exe" set FIND_EXE="%SystemRoot%\command\find.exe"

:check_JAVA_HOME
@rem Make sure we have a valid JAVA_HOME
if not "%JAVA_HOME%" == "" goto have_JAVA_HOME

echo.
echo ERROR: Environment variable JAVA_HOME has not been set.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo.
goto end

:have_JAVA_HOME
@rem Remove trailing slash from JAVA_HOME if found
if "%JAVA_HOME:~-1%"=="\" SET JAVA_HOME=%JAVA_HOME:~0,-1%

@rem Validate JAVA_HOME
%COMMAND_COM% /C DIR "%JAVA_HOME%" 2>&1 | %FIND_EXE% /I /C "%JAVA_HOME%" >nul
if not errorlevel 1 goto check_GRAILS_HOME

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo.
goto end

:check_GRAILS_HOME
@rem Define GRAILS_HOME if not set
if "%GRAILS_HOME%" == "" set GRAILS_HOME=%DIRNAME%..

@rem Remove trailing slash from GRAILS_HOME if found
if "%GRAILS_HOME:~-1%"=="\" SET GRAILS_HOME=%GRAILS_HOME:~0,-1%

:init

for %%x in ("%USERPROFILE%") do set SHORTHOME=%%~fsx
if "x%GRAILS_AGENT_CACHE_DIR%" == "x" set GRAILS_AGENT_CACHE_DIR=%SHORTHOME%/.grails/2.4.4/
set SPRINGLOADED_PARAMS="profile=grails;cacheDir=%GRAILS_AGENT_CACHE_DIR%"
if not exist "%GRAILS_AGENT_CACHE_DIR%" mkdir "%GRAILS_AGENT_CACHE_DIR%"

if "%GRAILS_NO_PERMGEN%" == "" (
type "%JAVA_HOME%\include\classfile_constants.h" 2>nul | findstr /R /C:"#define JVM_CLASSFILE_MAJOR_VERSION 5[23]" >nul
if not errorlevel 1 set GRAILS_NO_PERMGEN=1
)

set AGENT_STRING=-javaagent:wrapper/springloaded-1.2.1.RELEASE.jar -Xverify:none -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=\"%SPRINGLOADED_PARAMS%\"
set DISABLE_RELOADING=
if "%GRAILS_OPTS%" == "" (
set GRAILS_OPTS=-server -Xmx768M -Xms64M -Dfile.encoding=UTF-8
if not "%GRAILS_NO_PERMGEN%" == "1" (
set GRAILS_OPTS=-server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8
)
)

@rem Get command-line arguments, handling Windows variants
if "%@eval[2+2]" == "4" goto 4NT_args

@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set CP=
set INTERACTIVE=true

:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CURR_ARG=%~1
if "%CURR_ARG:~0,2%" == "-D" (
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %~1=%~2
shift
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-cp" (
set CP=%~2
shift
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-debug" (
set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-classpath" (
set CP=%~2
shift
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-reloading" (
set AGENT=%AGENT_STRING%
shift
goto win9xME_args_slurp
)
if "x%~1" == "xrun-app" (
set AGENT=%AGENT_STRING%
set INTERACTIVE=
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-noreloading" (
set DISABLE_RELOADING=true
shift
goto win9xME_args_slurp
)
set INTERACTIVE=
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto win9xME_args_slurp

:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$

:execute
@rem Setup the command line
set STARTER_CLASSPATH=wrapper/grails-wrapper-runtime-2.4.4.jar;wrapper;.

if exist "%USERPROFILE%/.groovy/init.bat" call "%USERPROFILE%/.groovy/init.bat"

@rem Setting a classpath using the -cp or -classpath option means not to use
@rem the global classpath. Groovy behaves then the same as the java interpreter

if "x" == "x%CLASSPATH%" goto after_classpath
set CP=%CP%;%CLASSPATH%
:after_classpath

if "x%DISABLE_RELOADING%" == "xtrue" (
set AGENT=
) else (
if "x%INTERACTIVE%" == "xtrue" (
set AGENT=%AGENT_STRING%
)
)

set STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper
set STARTER_CONF=%GRAILS_HOME%\conf\groovy-starter.conf

set JAVA_EXE=%JAVA_HOME%\bin\java.exe
set TOOLS_JAR=%JAVA_HOME%\lib\tools.jar

set JAVA_OPTS=%GRAILS_OPTS% %JAVA_OPTS% %AGENT%

set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name="%PROGNAME%"
set JAVA_OPTS=%JAVA_OPTS% -Dgrails.home="%GRAILS_HOME%"
set JAVA_OPTS=%JAVA_OPTS% -Dgrails.version=2.4.4
set JAVA_OPTS=%JAVA_OPTS% -Dbase.dir=.
set JAVA_OPTS=%JAVA_OPTS% -Dtools.jar="%TOOLS_JAR%"
set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%"

if exist "%USERPROFILE%/.groovy/postinit.bat" call "%USERPROFILE%/.groovy/postinit.bat"

@rem Execute Grails
CALL "%JAVA_EXE%" %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" "%CMD_LINE_ARGS%"
:end
@rem End local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" endlocal

@rem Optional pause the batch file
if "%GROOVY_BATCH_PAUSE%" == "on" pause
@@ -0,0 +1,24 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Overview</title>
<link rel="stylesheet" type="text/css" href="${createLink(action: 'dbdoc_stylesheet_css')}" title="Style">
</head>

<body bgcolor="white">

<font class="FrameItemFont"><a href="${createLink(action: 'currenttables')}" target="listFrame">Current Tables</a></font>
<br/>
<font class="FrameItemFont"><a href="${createLink(action: 'authors')}" target="listFrame">Authors</a></font>
<br/>
<font class="FrameItemFont"><a href="${createLink(action: 'changelogs')}" target="listFrame">Change Logs</a></font>
<br/>
<font class="FrameItemFont"><a href="${createLink(action: 'pending')}" target="objectFrame">Pending Changes</a></font>
<br/>
<font class="FrameItemFont"><a href="${createLink(action: 'pendingsql')}" target="objectFrame">Pending SQL</a></font>
<br/>
<font class="FrameItemFont"><a href="${createLink(action: 'recent')}" target="objectFrame">Most Recent Changes</a></font>
<br/>

</body>
</html>
@@ -0,0 +1,22 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Database Documentation</title>
</head>
<frameset cols="20%,80%">
<frameset rows="20%,80%">
<frame src="${createLink(action: 'globalnav')}" name="globalNavFrame" title="Global Navigation">
<frame src="${createLink(action: 'currenttables')}" name="listFrame" title="All Tables">
</frameset>
<frame src="${createLink(action: 'overview-summary')}" name="objectFrame" title="Package, class and interface descriptions" scrolling="yes">
<noframes>
<h2>
Frame Alert</h2>
<p>
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
<br/>
Link to<a href="${createLink(action: 'overview-summary')}">Non-frame version.</a>
</noframes>
</frameset>

</html>
@@ -0,0 +1,11 @@
<html>
<head>
<title>Database Documentation Overview</title>
<link rel="stylesheet" type="text/css" href="${createLink(action: 'dbdoc_stylesheet_css')}" title="Style"/>
</head>
<body>
<h2>Database Documentation</h2>
<p>This report contains documentation on the database changes made.</p>
<p>Use the navigation to the left to navigate the documentation.</p>
</body>
</html>
@@ -0,0 +1,60 @@
h1 {
}

.TableHeadingColor {
background: #ccccff; /* Dark mauve */
}
.TableSubHeadingColor {
background: #eeeeff; /* Light mauve */
}
.TableRowColor {
background: white;
}

.NavBarCell1 {
background-color: #eeeeff; /* Light mauve */
}
.NavBarCell1Rev {
background-color: #00008b; /* Dark Blue */
}
.NavBarFont1 {
color: black;
}
.NavBarFont1Rev {
color: white;
}

.NavBarCell2 {
background-color: white;
}
.NavBarCell3 {
background-color: white;
}

body {
background: #fff;
color: #333;
font: 12px verdana, arial, helvetica, sans-serif;
}

a:link, a:visited, a:hover {
color: #666;
font-weight: bold;
text-decoration: none;
}

td, th {
font: 11px verdana, arial, helvetica, sans-serif;
line-height: 12px;
padding: 5px 6px;
text-align: left;
vertical-align: top;
}

th {
color: #666;
font-size: 11px;
font-weight: bold;
line-height: 17px;
padding: 2px 6px;
}
@@ -0,0 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
'-//Hibernate/Hibernate Configuration DTD 3.0//EN'
'http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd'>

<hibernate-configuration>

<session-factory>
<!--
<mapping package='com.books' />
<mapping class='com.books.Book' />
<mapping resource='someresource.hbm.xml'/>
-->
</session-factory>

</hibernate-configuration>
@@ -0,0 +1 @@
//=require jquery/jquery-${org.codehaus.groovy.grails.plugins.jquery.JQueryConfig.SHIPPED_VERSION}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,334 @@
#!/usr/bin/env node
// -*- js -*-

global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util");
var fs = require("fs"), path = require("path");
var uglify = require("../uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js
consolidator = uglify.consolidator,
jsp = uglify.parser,
pro = uglify.uglify;

var options = {
ast: false,
consolidate: false,
mangle: true,
mangle_toplevel: false,
no_mangle_functions: false,
squeeze: true,
make_seqs: true,
dead_code: true,
verbose: false,
show_copyright: true,
out_same_file: false,
max_line_length: 32 * 1024,
unsafe: false,
reserved_names: null,
defines: { },
lift_vars: false,
codegen_options: {
ascii_only: false,
beautify: false,
indent_level: 4,
indent_start: 0,
quote_keys: false,
space_colon: false,
inline_script: false
},
make: false,
output: true // stdout
};

var args = jsp.slice(process.argv, 2);
var filename;

out: while (args.length > 0) {
var v = args.shift();
switch (v) {
case "-b":
case "--beautify":
options.codegen_options.beautify = true;
break;
case "-c":
case "--consolidate-primitive-values":
options.consolidate = true;
break;
case "-i":
case "--indent":
options.codegen_options.indent_level = args.shift();
break;
case "-q":
case "--quote-keys":
options.codegen_options.quote_keys = true;
break;
case "-mt":
case "--mangle-toplevel":
options.mangle_toplevel = true;
break;
case "-nmf":
case "--no-mangle-functions":
options.no_mangle_functions = true;
break;
case "--no-mangle":
case "-nm":
options.mangle = false;
break;
case "--no-squeeze":
case "-ns":
options.squeeze = false;
break;
case "--no-seqs":
options.make_seqs = false;
break;
case "--no-dead-code":
options.dead_code = false;
break;
case "--no-copyright":
case "-nc":
options.show_copyright = false;
break;
case "-o":
case "--output":
options.output = args.shift();
break;
case "--overwrite":
options.out_same_file = true;
break;
case "-v":
case "--verbose":
options.verbose = true;
break;
case "--ast":
options.ast = true;
break;
case "--unsafe":
options.unsafe = true;
break;
case "--max-line-len":
options.max_line_length = parseInt(args.shift(), 10);
break;
case "--reserved-names":
options.reserved_names = args.shift().split(",");
break;
case "--lift-vars":
options.lift_vars = true;
break;
case "-d":
case "--define":
var defarg = args.shift();
try {
var defsym = function(sym) {
// KEYWORDS_ATOM doesn't include NaN or Infinity - should we check
// for them too ?? We don't check reserved words and the like as the
// define values are only substituted AFTER parsing
if (jsp.KEYWORDS_ATOM.hasOwnProperty(sym)) {
throw "Don't define values for inbuilt constant '"+sym+"'";
}
return sym;
},
defval = function(v) {
if (v.match(/^"(.*)"$/) || v.match(/^'(.*)'$/)) {
return [ "string", RegExp.$1 ];
}
else if (!isNaN(parseFloat(v))) {
return [ "num", parseFloat(v) ];
}
else if (v.match(/^[a-z\$_][a-z\$_0-9]*$/i)) {
return [ "name", v ];
}
else if (!v.match(/"/)) {
return [ "string", v ];
}
else if (!v.match(/'/)) {
return [ "string", v ];
}
throw "Can't understand the specified value: "+v;
};
if (defarg.match(/^([a-z_\$][a-z_\$0-9]*)(=(.*))?$/i)) {
var sym = defsym(RegExp.$1),
val = RegExp.$2 ? defval(RegExp.$2.substr(1)) : [ 'name', 'true' ];
options.defines[sym] = val;
}
else {
throw "The --define option expects SYMBOL[=value]";
}
} catch(ex) {
sys.print("ERROR: In option --define "+defarg+"\n"+ex+"\n");
process.exit(1);
}
break;
case "--define-from-module":
var defmodarg = args.shift();
var defmodule = require(defmodarg);
var sym, val;
for (sym in defmodule) {
if (defmodule.hasOwnProperty(sym)) {
options.defines[sym] = function(val) {
if (typeof val == "string")
return [ "string", val ];
if (typeof val == "number")
return [ "num", val ];
if (val === true)
return [ 'name', 'true' ];
if (val === false)
return [ 'name', 'false' ];
if (val === null)
return [ 'name', 'null' ];
if (val === undefined)
return [ 'name', 'undefined' ];
sys.print("ERROR: In option --define-from-module "+defmodarg+"\n");
sys.print("ERROR: Unknown object type for: "+sym+"="+val+"\n");
process.exit(1);
return null;
}(defmodule[sym]);
}
}
break;
case "--ascii":
options.codegen_options.ascii_only = true;
break;
case "--make":
options.make = true;
break;
case "--inline-script":
options.codegen_options.inline_script = true;
break;
default:
filename = v;
break out;
}
}

if (options.verbose) {
pro.set_logger(function(msg){
sys.debug(msg);
});
}

jsp.set_logger(function(msg){
sys.debug(msg);
});

if (options.make) {
options.out_same_file = false; // doesn't make sense in this case
var makefile = global.eval("(" + fs.readFileSync(filename || "Makefile.uglify.js").toString() + ")");
var dir = path.dirname(filename);
output(makefile.files.map(function(file){
var code = fs.readFileSync(path.join(dir, file.name)).toString();
if (file.module) {
code = "!function(exports, global){global = this;\n" + code + "\n;this." + file.module + " = exports;}({})";
}
else if (file.hide) {
code = "(function(){" + code + "}());";
}
return squeeze_it(code);
}).join("\n"));
}
else if (filename) {
fs.readFile(filename, "utf8", function(err, text){
if (err) throw err;
output(squeeze_it(text));
});
}
else {
var stdin = process.openStdin();
stdin.setEncoding("utf8");
var text = "";
stdin.on("data", function(chunk){
text += chunk;
});
stdin.on("end", function() {
output(squeeze_it(text));
});
}

function output(text) {
var out;
if (options.out_same_file && filename)
options.output = filename;
if (options.output === true) {
out = process.stdout;
} else {
out = fs.createWriteStream(options.output, {
flags: "w",
encoding: "utf8",
mode: 0644
});
}
out.write(text.replace(/;*$/, ";"));
if (options.output !== true) {
out.end();
}
};

// --------- main ends here.

function show_copyright(comments) {
var ret = "";
for (var i = 0; i < comments.length; ++i) {
var c = comments[i];
if (c.type == "comment1") {
ret += "//" + c.value + "\n";
} else {
ret += "/*" + c.value + "*/";
}
}
return ret;
};

function squeeze_it(code) {
var result = "";
if (options.show_copyright) {
var tok = jsp.tokenizer(code), c;
c = tok();
result += show_copyright(c.comments_before);
}
try {
var ast = time_it("parse", function(){ return jsp.parse(code); });
if (options.consolidate) ast = time_it("consolidate", function(){
return consolidator.ast_consolidate(ast);
});
if (options.lift_vars) {
ast = time_it("lift", function(){ return pro.ast_lift_variables(ast); });
}
ast = time_it("mangle", function(){
return pro.ast_mangle(ast, {
mangle : options.mangle,
toplevel : options.mangle_toplevel,
defines : options.defines,
except : options.reserved_names,
no_functions : options.no_mangle_functions
});
});
if (options.squeeze) ast = time_it("squeeze", function(){
ast = pro.ast_squeeze(ast, {
make_seqs : options.make_seqs,
dead_code : options.dead_code,
keep_comps : !options.unsafe,
unsafe : options.unsafe
});
if (options.unsafe)
ast = pro.ast_squeeze_more(ast);
return ast;
});
if (options.ast)
return sys.inspect(ast, null, null);
result += time_it("generate", function(){ return pro.gen_code(ast, options.codegen_options) });
if (!options.codegen_options.beautify && options.max_line_length) {
result = time_it("split", function(){ return pro.split_lines(result, options.max_line_length) });
}
return result;
} catch(ex) {
sys.debug(ex.stack);
sys.debug(sys.inspect(ex));
sys.debug(JSON.stringify(ex));
process.exit(1);
}
};

function time_it(name, cont) {
if (!options.verbose)
return cont();
var t1 = new Date().getTime();
try { return cont(); }
finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); }
};
@@ -0,0 +1,75 @@
html { font-family: "Lucida Grande","Trebuchet MS",sans-serif; font-size: 12pt; }
body { max-width: 60em; }
.title { text-align: center; }
.todo { color: red; }
.done { color: green; }
.tag { background-color:lightblue; font-weight:normal }
.target { }
.timestamp { color: grey }
.timestamp-kwd { color: CadetBlue }
p.verse { margin-left: 3% }
pre {
border: 1pt solid #AEBDCC;
background-color: #F3F5F7;
padding: 5pt;
font-family: monospace;
font-size: 90%;
overflow:auto;
}
pre.src {
background-color: #eee; color: #112; border: 1px solid #000;
}
table { border-collapse: collapse; }
td, th { vertical-align: top; }
dt { font-weight: bold; }
div.figure { padding: 0.5em; }
div.figure p { text-align: center; }
.linenr { font-size:smaller }
.code-highlighted {background-color:#ffff00;}
.org-info-js_info-navigation { border-style:none; }
#org-info-js_console-label { font-size:10px; font-weight:bold;
white-space:nowrap; }
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
font-weight:bold; }

sup {
vertical-align: baseline;
position: relative;
top: -0.5em;
font-size: 80%;
}

sup a:link, sup a:visited {
text-decoration: none;
color: #c00;
}

sup a:before { content: "["; color: #999; }
sup a:after { content: "]"; color: #999; }

h1.title { border-bottom: 4px solid #000; padding-bottom: 5px; margin-bottom: 2em; }

#postamble {
color: #777;
font-size: 90%;
padding-top: 1em; padding-bottom: 1em; border-top: 1px solid #999;
margin-top: 2em;
padding-left: 2em;
padding-right: 2em;
text-align: right;
}

#postamble p { margin: 0; }

#footnotes { border-top: 1px solid #000; }

h1 { font-size: 200% }
h2 { font-size: 175% }
h3 { font-size: 150% }
h4 { font-size: 125% }

h1, h2, h3, h4 { font-family: "Bookman",Georgia,"Times New Roman",serif; font-weight: normal; }

@media print {
html { font-size: 11pt; }
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,87 @@
// var uglify = uglify || {};
uglify.squeeze = function() {
var exports = this;

var jsp = uglify.parser,
pro = uglify.uglify,
slice = jsp.slice,
member = jsp.member,
curry = jsp.curry,
MAP = pro.MAP,
PRECEDENCE = jsp.PRECEDENCE,
OPERATORS = jsp.OPERATORS;

function ast_squeeze_more(ast) {
var w = pro.ast_walker(), walk = w.walk, scope;
function with_scope(s, cont) {
var save = scope, ret;
scope = s;
ret = cont();
scope = save;
return ret;
};
function _lambda(name, args, body) {
return [ this[0], name, args, with_scope(body.scope, curry(MAP, body, walk)) ];
};
return w.with_walkers({
"toplevel": function(body) {
return [ this[0], with_scope(this.scope, curry(MAP, body, walk)) ];
},
"function": _lambda,
"defun": _lambda,
"new": function(ctor, args) {
if (ctor[0] == "name") {
if (ctor[1] == "Array" && !scope.has("Array")) {
if (args.length != 1) {
return [ "array", args ];
} else {
return walk([ "call", [ "name", "Array" ], args ]);
}
} else if (ctor[1] == "Object" && !scope.has("Object")) {
if (!args.length) {
return [ "object", [] ];
} else {
return walk([ "call", [ "name", "Object" ], args ]);
}
} else if ((ctor[1] == "RegExp" || ctor[1] == "Function" || ctor[1] == "Error") && !scope.has(ctor[1])) {
return walk([ "call", [ "name", ctor[1] ], args]);
}
}
},
"call": function(expr, args) {
if (expr[0] == "dot" && expr[1][0] == "string" && args.length == 1
&& (args[0][1] > 0 && expr[2] == "substring" || expr[2] == "substr")) {
return [ "call", [ "dot", expr[1], "slice"], args];
}
if (expr[0] == "dot" && expr[2] == "toString" && args.length == 0) {
// foo.toString() ==> foo+""
if (expr[1][0] == "string") return expr[1];
return [ "binary", "+", expr[1], [ "string", "" ]];
}
if (expr[0] == "name") {
if (expr[1] == "Array" && args.length != 1 && !scope.has("Array")) {
return [ "array", args ];
}
if (expr[1] == "Object" && !args.length && !scope.has("Object")) {
return [ "object", [] ];
}
if (expr[1] == "String" && !scope.has("String")) {
return [ "binary", "+", args[0], [ "string", "" ]];
}
}
}
}, function() {
return walk(pro.ast_add_scope(ast));
});
};

exports.ast_squeeze_more = ast_squeeze_more;

// Local variables:
// js-indent-level: 4
// End:
return this;
}();


uglify.uglify.ast_squeeze_more = uglify.squeeze.ast_squeeze_more;
@@ -0,0 +1,32 @@
{
"name" : "uglify-js",

"description" : "JavaScript parser and compressor/beautifier toolkit",

"author" : {
"name" : "Mihai Bazon",
"email" : "mihai.bazon@gmail.com",
"url" : "http://mihai.bazon.net/blog"
},

"version" : "1.3.4",

"main" : "./uglify-js.js",

"bin" : {
"uglifyjs" : "./bin/uglifyjs"
},

"repository": {
"type": "git",
"url": "git@github.com:mishoo/UglifyJS.git"
},

"devDependencies": {
"nodeunit": "0.7.x"
},

"scripts": {
"test": "$(which nodeunit || echo node_modules/nodeunit/bin/nodeunit) test/unit/scripts.js && test/testparser.js && test/testconsolidator.js"
}
}

Large diffs are not rendered by default.

@@ -0,0 +1,28 @@
#! /usr/bin/env node

global.sys = require("sys");
var fs = require("fs");

var jsp = require("../lib/parse-js");
var pro = require("../lib/process");

var filename = process.argv[2];
fs.readFile(filename, "utf8", function(err, text){
try {
var ast = time_it("parse", function(){ return jsp.parse(text); });
ast = time_it("mangle", function(){ return pro.ast_mangle(ast); });
ast = time_it("squeeze", function(){ return pro.ast_squeeze(ast); });
var gen = time_it("generate", function(){ return pro.gen_code(ast, false); });
sys.puts(gen);
} catch(ex) {
sys.debug(ex.stack);
sys.debug(sys.inspect(ex));
sys.debug(JSON.stringify(ex));
}
});

function time_it(name, cont) {
var t1 = new Date().getTime();
try { return cont(); }
finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); }
};

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1 @@
1e20,1e21
@@ -0,0 +1 @@
[],Array(1),[1,2,3]
@@ -0,0 +1 @@
(function(){var a=function(){};return new a(1,2,3,4)})()
@@ -0,0 +1 @@
(function(){function a(){}return new a(1,2,3,4)})()
@@ -0,0 +1 @@
(function(){function a(){}(function(){return new a(1,2,3)})()})()
@@ -0,0 +1 @@
a=1,b=a,c=1,d=b,e=d,longname=2;if(longname+1){x=3;if(x)var z=7}z=1,y=1,x=1,g+=1,h=g,++i,j=i,i++,j=i+17
@@ -0,0 +1 @@
var a=a+"a"+"b"+1+c,b=a+"c"+"ds"+123+c,c=a+"c"+123+d+"ds"+c
@@ -0,0 +1 @@
var a=13,b=1/3
@@ -0,0 +1 @@
print(a/ /[a-z]/)
@@ -0,0 +1 @@
function bar(){return--x}function foo(){while(bar());}function mak(){for(;;);}var x=5
@@ -0,0 +1 @@
_,_
@@ -0,0 +1 @@
var a=1;a==1?a=2:a=17
@@ -0,0 +1 @@
function a(a){return a==1?2:17}
@@ -0,0 +1 @@
function x(a){return typeof a=="object"?a:a===42?0:a*2}function y(a){return typeof a=="object"?a:null}
@@ -0,0 +1 @@
with({get NaN(){throw 0},get Infinity(){throw 0}})0/0,0/0,1/0,-1/0
@@ -0,0 +1 @@
function f(){var a;return(a="a")?a:a}f()
@@ -0,0 +1 @@
new(A,B),new(A||B),new(X?A:B)
@@ -0,0 +1 @@
var a={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"}
@@ -0,0 +1 @@
var a=3250441966
@@ -0,0 +1 @@
var a=function(b){b(),a()}
@@ -0,0 +1 @@
1
@@ -0,0 +1 @@
var a=0;switch(a){case 0:a++}
@@ -0,0 +1 @@
a:break a;console.log(1)
@@ -0,0 +1 @@
(a?b:c)?d:e
@@ -0,0 +1 @@
if(!x)debugger
@@ -0,0 +1 @@
o={".5":.5},o={.5:.5},o={.5:.5}
@@ -0,0 +1 @@
result=function(){return 1}()
@@ -0,0 +1 @@
var a=8,b=4,c=4
@@ -0,0 +1 @@
var a={};a["this"]=1,a.that=2
@@ -0,0 +1 @@
(function(){var a;if(noFreeCakes)return;return a=new FreeCake,a})()(function(){var a;if(noFreeCakes)return;return a=new FreeCake,a})()(function(){var a;if(noFreeCakes)return;return a=new FreeCake,a})()
@@ -0,0 +1 @@
function test(){debugger;return}
@@ -0,0 +1 @@
"use strict";function a(){function a(){function a(){void "c"}function b(){"salmon";void "d"}void "b"}function b(){"salmon";function a(){void "f";for(var a=0;a<10;a++)var b=function(){void "g"}()}void "e"}void "a"}
@@ -0,0 +1 @@
var a=2e3,b=.002,c=2e-5
@@ -0,0 +1 @@
((a||b)&&c)()
@@ -0,0 +1 @@
var s,i;s="",i=0
@@ -0,0 +1 @@
function bar(a){try{foo()}catch(b){alert("Exception caught (foo not defined)")}alert(a)}bar(10)
@@ -0,0 +1 @@
x=(y,z)
@@ -0,0 +1 @@
foo+"",a.toString(16),b.toString.call(c)
@@ -0,0 +1 @@
function f(){function b(){}if(a)return;b()}
@@ -0,0 +1 @@
[(a,b)]
@@ -0,0 +1 @@
var a={a:1,b:2}
@@ -0,0 +1 @@
(function(){var a=function b(a,b,c){return b}})()
@@ -0,0 +1 @@
var nullString="\0"
@@ -0,0 +1 @@
typeof a=="string",b+""!=c+"",d<e==f<g
@@ -0,0 +1 @@
var a=1,b=2
@@ -0,0 +1 @@
function id(a){return a}
@@ -0,0 +1 @@
with({});
@@ -0,0 +1 @@
1e20,1e21
@@ -0,0 +1,3 @@
new Array();
new Array(1);
new Array(1, 2, 3);
@@ -0,0 +1,4 @@
(function(){
var Array = function(){};
return new Array(1, 2, 3, 4);
})();
@@ -0,0 +1,4 @@
(function(){
return new Array(1, 2, 3, 4);
function Array() {};
})();
@@ -0,0 +1,6 @@
(function(){
(function(){
return new Array(1, 2, 3);
})();
function Array(){};
})();
@@ -0,0 +1,20 @@
a=1;
b=a;
c=1;
d=b;
e=d;
longname=2;
if (longname+1) {
x=3;
if (x) var z = 7;
}
z=1,y=1,x=1

g+=1;
h=g;

++i;
j=i;

i++;
j=i+17;
@@ -0,0 +1,3 @@
var a = a + "a" + "b" + 1 + c;
var b = a + "c" + "ds" + 123 + c;
var c = a + "c" + 123 + d + "ds" + c;
@@ -0,0 +1,5 @@
// test that the calculation is fold to 13
var a = 1 + 2 * 6;

// test that it isn't replaced with 0.3333 because that is more characters
var b = 1/3;
@@ -0,0 +1 @@
print(a / /[a-z]/);
@@ -0,0 +1,4 @@
var x = 5;
function bar() { return --x; }
function foo() { while (bar()); }
function mak() { for(;;); }
@@ -0,0 +1,10 @@
a=func();
b=z;
for (a++; i < 10; i++) { alert(i); }

var z=1;
g=2;
for (; i < 10; i++) { alert(i); }

var a = 2;
for (var i = 1; i < 10; i++) { alert(i); }
@@ -0,0 +1 @@
if(_);if(_);else;
@@ -0,0 +1,6 @@
var a = 1;
if (a == 1) {
a = 2;
} else {
a = 17;
}
@@ -0,0 +1,9 @@
function a(b) {
if (b == 1) {
return 2;
} else {
return 17;
}

return 3;
}
@@ -0,0 +1,16 @@
function x(a) {
if (typeof a === 'object')
return a;

if (a === 42)
return 0;

return a * 2;
}

function y(a) {
if (typeof a === 'object')
return a;

return null;
};
@@ -0,0 +1 @@
with({get NaN(){throw 0},get Infinity(){throw 0}})(1/0)/(1/0),0/0,123456/0,-123456/0
@@ -0,0 +1 @@
function f() { var a; if (a = 'a') { return a; } else { return a; } }; f();
@@ -0,0 +1,3 @@
new (A, B)
new (A || B)
new (X ? A : B)
@@ -0,0 +1 @@
var a = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'};
@@ -0,0 +1 @@
var a = 0xC1BDCEEE;
@@ -0,0 +1,4 @@
var a = function(b) {
b();
a()
}
@@ -0,0 +1 @@
{a: 1}
@@ -0,0 +1,6 @@
var a = 0;
switch(a) {
case 0:
a++;
break;
}
@@ -0,0 +1,7 @@
label1 : {
label2 : {
break label2;
console.log(2);
}
console.log(1);
}
@@ -0,0 +1 @@
(a ? b : c) ? d : e
@@ -0,0 +1 @@
if (!x) debugger;
@@ -0,0 +1,3 @@
o = {'.5':.5}
o = {'0.5':.5}
o = {0.5:.5}
@@ -0,0 +1 @@
result=(function(){ return 1;})()
@@ -0,0 +1,3 @@
var a = 1 << 3;
var b = 8 >> 1;
var c = 8 >>> 1;
@@ -0,0 +1,3 @@
var a = {};
a["this"] = 1;
a["that"] = 2;
@@ -0,0 +1,25 @@
(function () {
var cake
if (noFreeCakes) return /* I would
insert something
there, but I'm sort
of lazy so whatever.
*/ cake = new FreeCake()
return cake
})()

(function () {
var cake
if (noFreeCakes) return /* I would insert something there, */ /*
but I'm sort of lazy so
*/ /* whatever. */ cake = new FreeCake()
return cake
})()

(function () {
var cake
if (noFreeCakes) return // I would insert something there, but I'm sort of lazy so whatever.
cake = new FreeCake()
return cake
})()

@@ -0,0 +1,4 @@
function test() {
debugger;
return;
}
@@ -0,0 +1,32 @@
"use strict";
"use strict";

function a() {
void "a";
function b() {
"use strict";
void "b";
function c() {
"use strict";
void "c";
}
function d() {
"salmon";
void "d";
}
}
function e() {
"salmon";
void "e";
function f() {
"use strict";
"salmon";
void "f";
for (var i = 0; i < 10; i++) var g = function() {
"use strict";
"salmon";
void "g";
}();
}
}
};
@@ -0,0 +1,3 @@
var a = 2e3;
var b = 2e-3;
var c = 2e-5;
@@ -0,0 +1 @@
((a || b) && c)();
@@ -0,0 +1 @@
var s, i; s = ''; i = 0;
@@ -0,0 +1,9 @@
function bar(a) {
try {
foo();
} catch(e) {
alert("Exception caught (foo not defined)");
}
alert(a); // 10 in FF, "[object Error]" in IE
}
bar(10);
@@ -0,0 +1 @@
x = (y, z)
@@ -0,0 +1,3 @@
foo.toString();
a.toString(16);
b.toString.call(c);
@@ -0,0 +1,5 @@
function f() {
if (a) return;
g();
function g(){}
};
@@ -0,0 +1 @@
[(a,b)]
@@ -0,0 +1,4 @@
var a = {
a: 1,
b: 2, // <-- trailing comma
};
@@ -0,0 +1,82 @@
!function() {
'use strict';

var 七, // issue #222
$1, // issue #222
ლ_ಠ益ಠ_ლ; // issue #324
};

!function() {
'use strict';

// test if Unicode canonical equivalence is ignored
var \u006E\u0303,
\u00F1;
};

!function() {
'use strict';

var \uFF38, // X Lu (third to last)
\uFF58, // x Ll (third to last)
\u1FBC, // ᾼ Lt (third to last)
\uFF70, // ー Lm (third to last)
\u4DB3, // 䶳 Lo (third to last within a range)
\u97CA, // 韊 Lo (third to last within a range)
\uD7A1, // 힡 Lo (third to last within a range)
\uFFDA, // ᅳ Lo (third to last)
\uA6ED, // ꛭ Nl (third to last)
\u0024, // $
\u005F, // _
\u0024\uFF38, // X Lu (third to last)
\u0024\uFF58, // x Ll (third to last)
\u0024\u1FBC, // ᾼ Lt (third to last)
\u0024\uFF70, // ー Lm (third to last)
\u0024\u4DB3, // 䶳 Lo (third to last within a range)
\u0024\u97CA, // 韊 Lo (third to last within a range)
\u0024\uD7A1, // 힡 Lo (third to last within a range)
\u0024\uFFDA, // ᅳ Lo (third to last)
\u0024\uA6ED, // ꛭ Nl (third to last)
\u0024\uFE24, // ︤ Mn (third to last)
\u0024\uABE9, // ꯩ Mc (third to last)
\u0024\uFF17, // 7 Nd (third to last)
\u0024\uFE4E, // ﹎ Pc (third to last)
\u0024\u200C, // ZERO WIDTH NON-JOINER
\u0024\u200D, // ZERO WIDTH JOINER
\u0024\u0024, // $
\u0024\u005F; // _
};

!function() {
'use strict';

var X,
x,
ᾼ,
ー,
䶳,
韊,
힡,
ᅳ,
ꛭ,
$,
_,
$X,
$x,
$ᾼ,
$ー,
$䶳,
$韊,
$힡,
$ᅳ,
$ꛭ,
$︤,
$ꯩ,
$7,
$﹎,
$‌,
$‍,
$$,
$_;
};

@@ -0,0 +1,5 @@
(function() {
var x = function fun(a, fun, b) {
return fun;
};
}());
@@ -0,0 +1 @@
var nullString = "\0"
@@ -0,0 +1,3 @@
typeof a === 'string'
b + "" !== c + ""
d < e === f < g
@@ -0,0 +1,3 @@
// var declarations after each other should be combined
var a = 1;
var b = 2;
@@ -0,0 +1,21 @@
function id(a) {
// Form-Feed
// Vertical Tab
// No-Break Space
᠎// Mongolian Vowel Separator
 // En quad
 // Em quad
 // En space
 // Em space
 // Three-Per-Em Space
 // Four-Per-Em Space
 // Six-Per-Em Space
 // Figure Space
 // Punctuation Space
 // Thin Space
 // Hair Space
 // Narrow No-Break Space
 // Medium Mathematical Space
 // Ideographic Space
return a;
}
@@ -0,0 +1,2 @@
with({}) {
};
@@ -0,0 +1,57 @@
global.DIGITS_OVERRIDE_FOR_TESTING = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789";

var fs = require('fs'),
uglify = require('../../uglify-js'),
jsp = uglify.parser,
nodeunit = require('nodeunit'),
path = require('path'),
pro = uglify.uglify;

var Script = process.binding('evals').Script;

var scriptsPath = __dirname;

function compress(code) {
var ast = jsp.parse(code);
ast = pro.ast_mangle(ast, { mangle: true });
ast = pro.ast_squeeze(ast, { no_warnings: true });
ast = pro.ast_squeeze_more(ast);
return pro.gen_code(ast);
};

var testDir = path.join(scriptsPath, "compress", "test");
var expectedDir = path.join(scriptsPath, "compress", "expected");

function getTester(script) {
return function(test) {
var testPath = path.join(testDir, script);
var expectedPath = path.join(expectedDir, script);
var content = fs.readFileSync(testPath, 'utf-8');
var outputCompress = compress(content);

// Check if the noncompressdata is larger or same size as the compressed data
test.ok(content.length >= outputCompress.length);

// Check that a recompress gives the same result
var outputReCompress = compress(content);
test.equal(outputCompress, outputReCompress);

// Check if the compressed output is what is expected
var expected = fs.readFileSync(expectedPath, 'utf-8');
test.equal(outputCompress, expected.replace(/(\r?\n)+$/, ""));

test.done();
};
};

var tests = {};

var scripts = fs.readdirSync(testDir);
for (var i in scripts) {
var script = scripts[i];
if (/\.js$/.test(script)) {
tests[script] = getTester(script);
}
}

module.exports = nodeunit.testCase(tests);
@@ -0,0 +1,33 @@
function foo(arg1, arg2, arg3, arg4, arg5, arg6) {
var a = 5;
{
var d = 10, mak = 20, buz = 30;
var q = buz * 2;
}
if (moo) {
var a, b, c;
}
for (var arg1 = 0, d = 20; arg1 < 10; ++arg1)
console.log(arg3);
for (var i in mak) {}
for (j in d) {}
var d;

function test() {

};

//test();

(function moo(first, second){
console.log(first);
})(1);

(function moo(first, second){
console.log(moo());
})(1);
}


var foo;
var bar;