aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorUnknwon <joe2010xtmf@163.com>2014-07-26 00:24:27 -0400
committerUnknwon <joe2010xtmf@163.com>2014-07-26 00:24:27 -0400
commit8dd07c0ddd99ae626a1ec8c06f75f27fed51269f (patch)
tree261d3c9911dabc58c1ac54e4e36b3dee24d2032b /modules
parent0a739cf9ac901f54484c34bba8322418dedb09b0 (diff)
downloadgitea-8dd07c0ddd99ae626a1ec8c06f75f27fed51269f.tar.gz
gitea-8dd07c0ddd99ae626a1ec8c06f75f27fed51269f.zip
New UI merge in progress
Diffstat (limited to 'modules')
-rw-r--r--modules/auth/admin.go22
-rw-r--r--modules/auth/apiv1/miscellaneous.go14
-rw-r--r--modules/auth/auth.go175
-rw-r--r--modules/auth/auth_form.go36
-rw-r--r--modules/auth/ldap/ldap.go2
-rw-r--r--modules/auth/org.go49
-rw-r--r--modules/auth/publickey.go33
-rw-r--r--modules/auth/publickey_form.go21
-rw-r--r--modules/auth/repo.go252
-rw-r--r--modules/auth/repo_form.go165
-rw-r--r--modules/auth/user.go299
-rw-r--r--modules/auth/user_form.go98
-rw-r--r--modules/base/base.go4
-rw-r--r--modules/base/template.go29
-rw-r--r--modules/base/tool.go157
-rw-r--r--modules/bin/conf.go3623
-rw-r--r--modules/captcha/captcha.go201
-rw-r--r--modules/captcha/image.go487
-rw-r--r--modules/captcha/image_test.go42
-rw-r--r--modules/captcha/siprng.go267
-rw-r--r--modules/captcha/siprng_test.go23
-rw-r--r--modules/git/blob.go26
-rw-r--r--modules/git/commit.go78
-rw-r--r--modules/git/commit_archive.go36
-rw-r--r--modules/git/repo.go27
-rw-r--r--modules/git/repo_branch.go38
-rw-r--r--modules/git/repo_commit.go234
-rw-r--r--modules/git/repo_object.go14
-rw-r--r--modules/git/repo_tag.go96
-rw-r--r--modules/git/repo_tree.go32
-rw-r--r--modules/git/sha1.go87
-rw-r--r--modules/git/signature.go40
-rw-r--r--modules/git/tag.go67
-rw-r--r--modules/git/tree.go124
-rw-r--r--modules/git/tree_blob.go46
-rw-r--r--modules/git/tree_entry.go109
-rw-r--r--modules/git/utils.go27
-rw-r--r--modules/git/version.go43
-rw-r--r--modules/log/console.go73
-rw-r--r--modules/log/file.go237
-rw-r--r--modules/log/log.go251
-rw-r--r--modules/mailer/mail.go22
-rw-r--r--modules/mailer/mailer.go2
-rw-r--r--modules/middleware/auth.go6
-rw-r--r--modules/middleware/binding/binding.go103
-rw-r--r--modules/middleware/context.go263
-rw-r--r--modules/middleware/logger.go52
-rw-r--r--modules/middleware/render.go281
-rw-r--r--modules/middleware/repo.go99
-rw-r--r--modules/middleware/static.go127
-rw-r--r--modules/process/manager.go2
-rw-r--r--modules/setting/setting.go80
-rw-r--r--modules/ssh/ssh.go119
53 files changed, 3576 insertions, 5264 deletions
diff --git a/modules/auth/admin.go b/modules/auth/admin.go
index 69161f908a..38f3292b88 100644
--- a/modules/auth/admin.go
+++ b/modules/auth/admin.go
@@ -5,12 +5,9 @@
package auth
import (
- "net/http"
- "reflect"
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
- "github.com/go-martini/martini"
-
- "github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/middleware/binding"
)
@@ -25,17 +22,6 @@ type AdminEditUserForm struct {
LoginType int `form:"login_type"`
}
-func (f *AdminEditUserForm) Name(field string) string {
- names := map[string]string{
- "Email": "E-mail address",
- "Website": "Website",
- "Location": "Location",
- "Avatar": "Gravatar Email",
- }
- return names[field]
-}
-
-func (f *AdminEditUserForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
+func (f *AdminEditUserForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
}
diff --git a/modules/auth/apiv1/miscellaneous.go b/modules/auth/apiv1/miscellaneous.go
index 726a080147..30515eb861 100644
--- a/modules/auth/apiv1/miscellaneous.go
+++ b/modules/auth/apiv1/miscellaneous.go
@@ -5,13 +5,12 @@
package apiv1
import (
- "net/http"
"reflect"
- "github.com/go-martini/martini"
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
"github.com/gogits/gogs/modules/auth"
- "github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/middleware/binding"
)
@@ -22,17 +21,16 @@ type MarkdownForm struct {
Context string `form:"context"`
}
-func (f *MarkdownForm) Validate(errs *binding.Errors, req *http.Request, ctx martini.Context) {
- data := ctx.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validateApiReq(errs, data, f)
+func (f *MarkdownForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validateApiReq(errs, ctx.Data, f, l)
}
-func validateApiReq(errs *binding.Errors, data base.TmplData, f interface{}) {
+func validateApiReq(errs *binding.Errors, data map[string]interface{}, f interface{}, l i18n.Locale) {
if errs.Count() == 0 {
return
} else if len(errs.Overall) > 0 {
for _, err := range errs.Overall {
- log.Error("%s: %v", reflect.TypeOf(f), err)
+ log.Error(4, "%s: %v", reflect.TypeOf(f), err)
}
return
}
diff --git a/modules/auth/auth.go b/modules/auth/auth.go
index e9b215101b..2236de4761 100644
--- a/modules/auth/auth.go
+++ b/modules/auth/auth.go
@@ -7,49 +7,152 @@ package auth
import (
"net/http"
"reflect"
+ "strings"
- "github.com/go-martini/martini"
+ "github.com/macaron-contrib/i18n"
+ "github.com/macaron-contrib/session"
- "github.com/gogits/gogs/modules/base"
+ "github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/middleware/binding"
+ "github.com/gogits/gogs/modules/setting"
)
-type AuthenticationForm struct {
- Id int64 `form:"id"`
- Type int `form:"type"`
- AuthName string `form:"name" binding:"Required;MaxSize(50)"`
- Domain string `form:"domain"`
- Host string `form:"host"`
- Port int `form:"port"`
- UseSSL bool `form:"usessl"`
- BaseDN string `form:"base_dn"`
- Attributes string `form:"attributes"`
- Filter string `form:"filter"`
- MsAdSA string `form:"ms_ad_sa"`
- IsActived bool `form:"is_actived"`
- SmtpAuth string `form:"smtpauth"`
- SmtpHost string `form:"smtphost"`
- SmtpPort int `form:"smtpport"`
- Tls bool `form:"tls"`
- AllowAutoRegister bool `form:"allowautoregister"`
+// SignedInId returns the id of signed in user.
+func SignedInId(header http.Header, sess session.Store) int64 {
+ if !models.HasEngine {
+ return 0
+ }
+
+ if setting.Service.EnableReverseProxyAuth {
+ webAuthUser := header.Get(setting.ReverseProxyAuthUser)
+ if len(webAuthUser) > 0 {
+ u, err := models.GetUserByName(webAuthUser)
+ if err != nil {
+ if err != models.ErrUserNotExist {
+ log.Error(4, "GetUserByName: %v", err)
+ }
+ return 0
+ }
+ return u.Id
+ }
+ }
+
+ uid := sess.Get("uid")
+ if uid == nil {
+ return 0
+ }
+ if id, ok := uid.(int64); ok {
+ if _, err := models.GetUserById(id); err != nil {
+ if err != models.ErrUserNotExist {
+ log.Error(4, "GetUserById: %v", err)
+ }
+ return 0
+ }
+ return id
+ }
+ return 0
}
-func (f *AuthenticationForm) Name(field string) string {
- names := map[string]string{
- "AuthName": "Authentication's name",
- "Domain": "Domain name",
- "Host": "Host address",
- "Port": "Port Number",
- "UseSSL": "Use SSL",
- "BaseDN": "Base DN",
- "Attributes": "Search attributes",
- "Filter": "Search filter",
- "MsAdSA": "Ms Ad SA",
- }
- return names[field]
+// SignedInUser returns the user object of signed user.
+func SignedInUser(header http.Header, sess session.Store) *models.User {
+ uid := SignedInId(header, sess)
+ if uid <= 0 {
+ return nil
+ }
+
+ u, err := models.GetUserById(uid)
+ if err != nil {
+ log.Error(4, "GetUserById: %v", err)
+ return nil
+ }
+ return u
}
-func (f *AuthenticationForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
+// AssignForm assign form values back to the template data.
+func AssignForm(form interface{}, data map[string]interface{}) {
+ typ := reflect.TypeOf(form)
+ val := reflect.ValueOf(form)
+
+ if typ.Kind() == reflect.Ptr {
+ typ = typ.Elem()
+ val = val.Elem()
+ }
+
+ for i := 0; i < typ.NumField(); i++ {
+ field := typ.Field(i)
+
+ fieldName := field.Tag.Get("form")
+ // Allow ignored fields in the struct
+ if fieldName == "-" {
+ continue
+ }
+
+ data[fieldName] = val.Field(i).Interface()
+ }
+}
+
+func GetMinMaxSize(field reflect.StructField) string {
+ for _, rule := range strings.Split(field.Tag.Get("binding"), ";") {
+ if strings.HasPrefix(rule, "MinSize(") || strings.HasPrefix(rule, "MaxSize(") {
+ return rule[8 : len(rule)-1]
+ }
+ }
+ return ""
+}
+
+func validate(errs *binding.Errors, data map[string]interface{}, f interface{}, l i18n.Locale) {
+ if errs.Count() == 0 {
+ return
+ } else if len(errs.Overall) > 0 {
+ for _, err := range errs.Overall {
+ log.Error(4, "%s: %v", reflect.TypeOf(f), err)
+ }
+ return
+ }
+
+ data["HasError"] = true
+ AssignForm(f, data)
+
+ typ := reflect.TypeOf(f)
+ val := reflect.ValueOf(f)
+
+ if typ.Kind() == reflect.Ptr {
+ typ = typ.Elem()
+ val = val.Elem()
+ }
+
+ for i := 0; i < typ.NumField(); i++ {
+ field := typ.Field(i)
+
+ fieldName := field.Tag.Get("form")
+ // Allow ignored fields in the struct
+ if fieldName == "-" {
+ continue
+ }
+
+ if err, ok := errs.Fields[field.Name]; ok {
+ data["Err_"+field.Name] = true
+ trName := l.Tr("form." + field.Name)
+ switch err {
+ case binding.BindingRequireError:
+ data["ErrorMsg"] = trName + l.Tr("form.require_error")
+ case binding.BindingAlphaDashError:
+ data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_error")
+ case binding.BindingAlphaDashDotError:
+ data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_dot_error")
+ case binding.BindingMinSizeError:
+ data["ErrorMsg"] = trName + l.Tr("form.min_size_error", GetMinMaxSize(field))
+ case binding.BindingMaxSizeError:
+ data["ErrorMsg"] = trName + l.Tr("form.max_size_error", GetMinMaxSize(field))
+ case binding.BindingEmailError:
+ data["ErrorMsg"] = trName + l.Tr("form.email_error")
+ case binding.BindingUrlError:
+ data["ErrorMsg"] = trName + l.Tr("form.url_error")
+ default:
+ data["ErrorMsg"] = l.Tr("form.unknown_error") + " " + err
+ }
+ return
+ }
+ }
}
diff --git a/modules/auth/auth_form.go b/modules/auth/auth_form.go
new file mode 100644
index 0000000000..cb9da5dff4
--- /dev/null
+++ b/modules/auth/auth_form.go
@@ -0,0 +1,36 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package auth
+
+import (
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
+
+ "github.com/gogits/gogs/modules/middleware/binding"
+)
+
+type AuthenticationForm struct {
+ Id int64 `form:"id"`
+ Type int `form:"type"`
+ AuthName string `form:"name" binding:"Required;MaxSize(50)"`
+ Domain string `form:"domain"`
+ Host string `form:"host"`
+ Port int `form:"port"`
+ UseSSL bool `form:"usessl"`
+ BaseDN string `form:"base_dn"`
+ Attributes string `form:"attributes"`
+ Filter string `form:"filter"`
+ MsAdSA string `form:"ms_ad_sa"`
+ IsActived bool `form:"is_actived"`
+ SmtpAuth string `form:"smtpauth"`
+ SmtpHost string `form:"smtphost"`
+ SmtpPort int `form:"smtpport"`
+ Tls bool `form:"tls"`
+ AllowAutoRegister bool `form:"allowautoregister"`
+}
+
+func (f *AuthenticationForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
diff --git a/modules/auth/ldap/ldap.go b/modules/auth/ldap/ldap.go
index e944a90a1e..e27e5133ed 100644
--- a/modules/auth/ldap/ldap.go
+++ b/modules/auth/ldap/ldap.go
@@ -55,7 +55,7 @@ func LoginUser(name, passwd string) (a string, r bool) {
func (ls Ldapsource) SearchEntry(name, passwd string) (string, bool) {
l, err := ldapDial(ls)
if err != nil {
- log.Error("LDAP Connect error, %s:%v", ls.Host, err)
+ log.Error(4, "LDAP Connect error, %s:%v", ls.Host, err)
ls.Enabled = false
return "", false
}
diff --git a/modules/auth/org.go b/modules/auth/org.go
index e243627ef2..c45d83a711 100644
--- a/modules/auth/org.go
+++ b/modules/auth/org.go
@@ -5,12 +5,9 @@
package auth
import (
- "net/http"
- "reflect"
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
- "github.com/go-martini/martini"
-
- "github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/middleware/binding"
)
@@ -26,17 +23,8 @@ type CreateOrgForm struct {
Email string `form:"email" binding:"Required;Email;MaxSize(50)"`
}
-func (f *CreateOrgForm) Name(field string) string {
- names := map[string]string{
- "OrgName": "Organization name",
- "Email": "E-mail address",
- }
- return names[field]
-}
-
-func (f *CreateOrgForm) Validate(errs *binding.Errors, req *http.Request, ctx martini.Context) {
- data := ctx.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errs, data, f)
+func (f *CreateOrgForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
}
type OrgSettingForm struct {
@@ -47,20 +35,8 @@ type OrgSettingForm struct {
Location string `form:"location" binding:"MaxSize(50)"`
}
-func (f *OrgSettingForm) Name(field string) string {
- names := map[string]string{
- "DisplayName": "Display name",
- "Email": "E-mail address",
- "Description": "Description",
- "Website": "Website address",
- "Location": "Location",
- }
- return names[field]
-}
-
-func (f *OrgSettingForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
+func (f *OrgSettingForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
}
// ___________
@@ -76,15 +52,6 @@ type CreateTeamForm struct {
Permission string `form:"permission"`
}
-func (f *CreateTeamForm) Name(field string) string {
- names := map[string]string{
- "TeamName": "Team name",
- "Description": "Team description",
- }
- return names[field]
-}
-
-func (f *CreateTeamForm) Validate(errs *binding.Errors, req *http.Request, ctx martini.Context) {
- data := ctx.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errs, data, f)
+func (f *CreateTeamForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
}
diff --git a/modules/auth/publickey.go b/modules/auth/publickey.go
deleted file mode 100644
index b828c92b57..0000000000
--- a/modules/auth/publickey.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2014 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package auth
-
-import (
- "net/http"
- "reflect"
-
- "github.com/go-martini/martini"
-
- "github.com/gogits/gogs/modules/base"
- "github.com/gogits/gogs/modules/middleware/binding"
-)
-
-type AddSSHKeyForm struct {
- KeyName string `form:"keyname" binding:"Required"`
- KeyContent string `form:"key_content" binding:"Required"`
-}
-
-func (f *AddSSHKeyForm) Name(field string) string {
- names := map[string]string{
- "KeyName": "SSH key name",
- "KeyContent": "SSH key content",
- }
- return names[field]
-}
-
-func (f *AddSSHKeyForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
diff --git a/modules/auth/publickey_form.go b/modules/auth/publickey_form.go
new file mode 100644
index 0000000000..4618a7ea36
--- /dev/null
+++ b/modules/auth/publickey_form.go
@@ -0,0 +1,21 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package auth
+
+import (
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
+
+ "github.com/gogits/gogs/modules/middleware/binding"
+)
+
+type AddSSHKeyForm struct {
+ SSHTitle string `form:"title" binding:"Required"`
+ Content string `form:"content" binding:"Required"`
+}
+
+func (f *AddSSHKeyForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
diff --git a/modules/auth/repo.go b/modules/auth/repo.go
deleted file mode 100644
index d3d215322a..0000000000
--- a/modules/auth/repo.go
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright 2014 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package auth
-
-import (
- "net/http"
- "reflect"
-
- "github.com/go-martini/martini"
-
- "github.com/gogits/gogs/modules/base"
- "github.com/gogits/gogs/modules/middleware/binding"
-)
-
-// __________ .__ __
-// \______ \ ____ ______ ____ _____|__|/ |_ ___________ ___.__.
-// | _// __ \\____ \ / _ \/ ___/ \ __\/ _ \_ __ < | |
-// | | \ ___/| |_> > <_> )___ \| || | ( <_> ) | \/\___ |
-// |____|_ /\___ > __/ \____/____ >__||__| \____/|__| / ____|
-// \/ \/|__| \/ \/
-
-type CreateRepoForm struct {
- Uid int64 `form:"uid" binding:"Required"`
- RepoName string `form:"repo" binding:"Required;AlphaDash;MaxSize(100)"`
- Private bool `form:"private"`
- Description string `form:"desc" binding:"MaxSize(255)"`
- Language string `form:"language"`
- License string `form:"license"`
- InitReadme bool `form:"initReadme"`
-}
-
-func (f *CreateRepoForm) Name(field string) string {
- names := map[string]string{
- "RepoName": "Repository name",
- "Description": "Description",
- }
- return names[field]
-}
-
-func (f *CreateRepoForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-type MigrateRepoForm struct {
- Url string `form:"url" binding:"Url"`
- AuthUserName string `form:"auth_username"`
- AuthPasswd string `form:"auth_password"`
- Uid int64 `form:"uid" binding:"Required"`
- RepoName string `form:"repo" binding:"Required;AlphaDash;MaxSize(100)"`
- Mirror bool `form:"mirror"`
- Private bool `form:"private"`
- Description string `form:"desc" binding:"MaxSize(255)"`
-}
-
-func (f *MigrateRepoForm) Name(field string) string {
- names := map[string]string{
- "Url": "Migration URL",
- "RepoName": "Repository name",
- "Description": "Description",
- }
- return names[field]
-}
-
-func (f *MigrateRepoForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-type RepoSettingForm struct {
- RepoName string `form:"name" binding:"Required;AlphaDash;MaxSize(100)"`
- Description string `form:"desc" binding:"MaxSize(255)"`
- Website string `form:"site" binding:"Url;MaxSize(100)"`
- Branch string `form:"branch"`
- Interval int `form:"interval"`
- Private bool `form:"private"`
- GoGet bool `form:"goget"`
-}
-
-func (f *RepoSettingForm) Name(field string) string {
- names := map[string]string{
- "RepoName": "Repository name",
- "Description": "Description",
- "Website": "Website address",
- }
- return names[field]
-}
-
-func (f *RepoSettingForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-// __ __ ___. .__ .__ __
-// / \ / \ ____\_ |__ | |__ | |__ ____ | | __
-// \ \/\/ // __ \| __ \| | \| | \ / _ \| |/ /
-// \ /\ ___/| \_\ \ Y \ Y ( <_> ) <
-// \__/\ / \___ >___ /___| /___| /\____/|__|_ \
-// \/ \/ \/ \/ \/ \/
-
-type NewWebhookForm struct {
- Url string `form:"url" binding:"Required;Url"`
- ContentType string `form:"content_type" binding:"Required"`
- Secret string `form:"secret""`
- PushOnly bool `form:"push_only"`
- Active bool `form:"active"`
-}
-
-func (f *NewWebhookForm) Name(field string) string {
- names := map[string]string{
- "Url": "Payload URL",
- "ContentType": "Content type",
- }
- return names[field]
-}
-
-func (f *NewWebhookForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-// .___
-// | | ______ ________ __ ____
-// | |/ ___// ___/ | \_/ __ \
-// | |\___ \ \___ \| | /\ ___/
-// |___/____ >____ >____/ \___ >
-// \/ \/ \/
-
-type CreateIssueForm struct {
- IssueName string `form:"title" binding:"Required;MaxSize(50)"`
- MilestoneId int64 `form:"milestoneid"`
- AssigneeId int64 `form:"assigneeid"`
- Labels string `form:"labels"`
- Content string `form:"content"`
-}
-
-func (f *CreateIssueForm) Name(field string) string {
- names := map[string]string{
- "IssueName": "Issue name",
- }
- return names[field]
-}
-
-func (f *CreateIssueForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-// _____ .__.__ __
-// / \ |__| | ____ _______/ |_ ____ ____ ____
-// / \ / \| | | _/ __ \ / ___/\ __\/ _ \ / \_/ __ \
-// / Y \ | |_\ ___/ \___ \ | | ( <_> ) | \ ___/
-// \____|__ /__|____/\___ >____ > |__| \____/|___| /\___ >
-// \/ \/ \/ \/ \/
-
-type CreateMilestoneForm struct {
- Title string `form:"title" binding:"Required;MaxSize(50)"`
- Content string `form:"content"`
- Deadline string `form:"due_date"`
-}
-
-func (f *CreateMilestoneForm) Name(field string) string {
- names := map[string]string{
- "Title": "Milestone name",
- }
- return names[field]
-}
-
-func (f *CreateMilestoneForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-// .____ ___. .__
-// | | _____ \_ |__ ____ | |
-// | | \__ \ | __ \_/ __ \| |
-// | |___ / __ \| \_\ \ ___/| |__
-// |_______ (____ /___ /\___ >____/
-// \/ \/ \/ \/
-
-type CreateLabelForm struct {
- Title string `form:"title" binding:"Required;MaxSize(50)"`
- Color string `form:"color" binding:"Required;Size(7)"`
-}
-
-func (f *CreateLabelForm) Name(field string) string {
- names := map[string]string{
- "Title": "Label name",
- "Color": "Label color",
- }
- return names[field]
-}
-
-func (f *CreateLabelForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-// __________ .__
-// \______ \ ____ | | ____ _____ ______ ____
-// | _// __ \| | _/ __ \\__ \ / ___// __ \
-// | | \ ___/| |_\ ___/ / __ \_\___ \\ ___/
-// |____|_ /\___ >____/\___ >____ /____ >\___ >
-// \/ \/ \/ \/ \/ \/
-
-type NewReleaseForm struct {
- TagName string `form:"tag_name" binding:"Required"`
- Target string `form:"tag_target" binding:"Required"`
- Title string `form:"title" binding:"Required"`
- Content string `form:"content" binding:"Required"`
- Draft string `form:"draft"`
- Prerelease bool `form:"prerelease"`
-}
-
-func (f *NewReleaseForm) Name(field string) string {
- names := map[string]string{
- "TagName": "Tag name",
- "Target": "Target",
- "Title": "Release title",
- "Content": "Release content",
- }
- return names[field]
-}
-
-func (f *NewReleaseForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-type EditReleaseForm struct {
- Target string `form:"tag_target" binding:"Required"`
- Title string `form:"title" binding:"Required"`
- Content string `form:"content" binding:"Required"`
- Draft string `form:"draft"`
- Prerelease bool `form:"prerelease"`
-}
-
-func (f *EditReleaseForm) Name(field string) string {
- names := map[string]string{
- "Target": "Target",
- "Title": "Release title",
- "Content": "Release content",
- }
- return names[field]
-}
-
-func (f *EditReleaseForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
diff --git a/modules/auth/repo_form.go b/modules/auth/repo_form.go
new file mode 100644
index 0000000000..11efb24d1c
--- /dev/null
+++ b/modules/auth/repo_form.go
@@ -0,0 +1,165 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package auth
+
+import (
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
+
+ "github.com/gogits/gogs/modules/middleware/binding"
+)
+
+// _______________________________________ _________.______________________ _______________.___.
+// \______ \_ _____/\______ \_____ \ / _____/| \__ ___/\_____ \\______ \__ | |
+// | _/| __)_ | ___// | \ \_____ \ | | | | / | \| _// | |
+// | | \| \ | | / | \/ \| | | | / | \ | \\____ |
+// |____|_ /_______ / |____| \_______ /_______ /|___| |____| \_______ /____|_ // ______|
+// \/ \/ \/ \/ \/ \/ \/
+
+type CreateRepoForm struct {
+ Uid int64 `form:"uid" binding:"Required"`
+ RepoName string `form:"repo_name" binding:"Required;AlphaDash;MaxSize(100)"`
+ Private bool `form:"private"`
+ Description string `form:"desc" binding:"MaxSize(255)"`
+ Gitignore string `form:"gitignore"`
+ License string `form:"license"`
+ InitReadme bool `form:"init_readme"`
+}
+
+func (f *CreateRepoForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+type MigrateRepoForm struct {
+ Url string `form:"url" binding:"Url"`
+ AuthUserName string `form:"auth_username"`
+ AuthPasswd string `form:"auth_password"`
+ Uid int64 `form:"uid" binding:"Required"`
+ RepoName string `form:"repo" binding:"Required;AlphaDash;MaxSize(100)"`
+ Mirror bool `form:"mirror"`
+ Private bool `form:"private"`
+ Description string `form:"desc" binding:"MaxSize(255)"`
+}
+
+func (f *MigrateRepoForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+type RepoSettingForm struct {
+ RepoName string `form:"name" binding:"Required;AlphaDash;MaxSize(100)"`
+ Description string `form:"desc" binding:"MaxSize(255)"`
+ Website string `form:"site" binding:"Url;MaxSize(100)"`
+ Branch string `form:"branch"`
+ Interval int `form:"interval"`
+ Private bool `form:"private"`
+ GoGet bool `form:"goget"`
+}
+
+func (f *RepoSettingForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+// __ __ ___. .__ .__ __
+// / \ / \ ____\_ |__ | |__ | |__ ____ | | __
+// \ \/\/ // __ \| __ \| | \| | \ / _ \| |/ /
+// \ /\ ___/| \_\ \ Y \ Y ( <_> ) <
+// \__/\ / \___ >___ /___| /___| /\____/|__|_ \
+// \/ \/ \/ \/ \/ \/
+
+type NewWebhookForm struct {
+ Url string `form:"url" binding:"Required;Url"`
+ ContentType string `form:"content_type" binding:"Required"`
+ Secret string `form:"secret""`
+ PushOnly bool `form:"push_only"`
+ Active bool `form:"active"`
+}
+
+func (f *NewWebhookForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+// .___
+// | | ______ ________ __ ____
+// | |/ ___// ___/ | \_/ __ \
+// | |\___ \ \___ \| | /\ ___/
+// |___/____ >____ >____/ \___ >
+// \/ \/ \/
+
+type CreateIssueForm struct {
+ IssueName string `form:"title" binding:"Required;MaxSize(50)"`
+ MilestoneId int64 `form:"milestoneid"`
+ AssigneeId int64 `form:"assigneeid"`
+ Labels string `form:"labels"`
+ Content string `form:"content"`
+}
+
+func (f *CreateIssueForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+// _____ .__.__ __
+// / \ |__| | ____ _______/ |_ ____ ____ ____
+// / \ / \| | | _/ __ \ / ___/\ __\/ _ \ / \_/ __ \
+// / Y \ | |_\ ___/ \___ \ | | ( <_> ) | \ ___/
+// \____|__ /__|____/\___ >____ > |__| \____/|___| /\___ >
+// \/ \/ \/ \/ \/
+
+type CreateMilestoneForm struct {
+ Title string `form:"title" binding:"Required;MaxSize(50)"`
+ Content string `form:"content"`
+ Deadline string `form:"due_date"`
+}
+
+func (f *CreateMilestoneForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+// .____ ___. .__
+// | | _____ \_ |__ ____ | |
+// | | \__ \ | __ \_/ __ \| |
+// | |___ / __ \| \_\ \ ___/| |__
+// |_______ (____ /___ /\___ >____/
+// \/ \/ \/ \/
+
+type CreateLabelForm struct {
+ Title string `form:"title" binding:"Required;MaxSize(50)"`
+ Color string `form:"color" binding:"Required;Size(7)"`
+}
+
+func (f *CreateLabelForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+// __________ .__
+// \______ \ ____ | | ____ _____ ______ ____
+// | _// __ \| | _/ __ \\__ \ / ___// __ \
+// | | \ ___/| |_\ ___/ / __ \_\___ \\ ___/
+// |____|_ /\___ >____/\___ >____ /____ >\___ >
+// \/ \/ \/ \/ \/ \/
+
+type NewReleaseForm struct {
+ TagName string `form:"tag_name" binding:"Required"`
+ Target string `form:"tag_target" binding:"Required"`
+ Title string `form:"title" binding:"Required"`
+ Content string `form:"content" binding:"Required"`
+ Draft string `form:"draft"`
+ Prerelease bool `form:"prerelease"`
+}
+
+func (f *NewReleaseForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+type EditReleaseForm struct {
+ Target string `form:"tag_target" binding:"Required"`
+ Title string `form:"title" binding:"Required"`
+ Content string `form:"content" binding:"Required"`
+ Draft string `form:"draft"`
+ Prerelease bool `form:"prerelease"`
+}
+
+func (f *EditReleaseForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
diff --git a/modules/auth/user.go b/modules/auth/user.go
deleted file mode 100644
index dfb969e816..0000000000
--- a/modules/auth/user.go
+++ /dev/null
@@ -1,299 +0,0 @@
-// Copyright 2014 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package auth
-
-import (
- "net/http"
- "reflect"
- "strings"
-
- "github.com/go-martini/martini"
-
- "github.com/gogits/session"
-
- "github.com/gogits/gogs/models"
- "github.com/gogits/gogs/modules/base"
- "github.com/gogits/gogs/modules/log"
- "github.com/gogits/gogs/modules/middleware/binding"
- "github.com/gogits/gogs/modules/setting"
-)
-
-// Web form interface.
-type Form interface {
- Name(field string) string
-}
-
-type RegisterForm struct {
- UserName string `form:"username" binding:"Required;AlphaDashDot;MaxSize(30)"`
- Email string `form:"email" binding:"Required;Email;MaxSize(50)"`
- Password string `form:"passwd" binding:"Required;MinSize(6);MaxSize(30)"`
- RetypePasswd string `form:"retypepasswd"`
- LoginType string `form:"logintype"`
- LoginName string `form:"loginname"`
-}
-
-func (f *RegisterForm) Name(field string) string {
- names := map[string]string{
- "UserName": "Username",
- "Email": "E-mail address",
- "Password": "Password",
- "RetypePasswd": "Re-type password",
- }
- return names[field]
-}
-
-func (f *RegisterForm) Validate(errs *binding.Errors, req *http.Request, ctx martini.Context) {
- data := ctx.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errs, data, f)
-}
-
-type LogInForm struct {
- UserName string `form:"username" binding:"Required;MaxSize(35)"`
- Password string `form:"passwd" binding:"Required;MinSize(6);MaxSize(30)"`
- Remember bool `form:"remember"`
-}
-
-func (f *LogInForm) Name(field string) string {
- names := map[string]string{
- "UserName": "Username",
- "Password": "Password",
- }
- return names[field]
-}
-
-func (f *LogInForm) Validate(errs *binding.Errors, req *http.Request, ctx martini.Context) {
- data := ctx.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errs, data, f)
-}
-
-func GetMinMaxSize(field reflect.StructField) string {
- for _, rule := range strings.Split(field.Tag.Get("binding"), ";") {
- if strings.HasPrefix(rule, "MinSize(") || strings.HasPrefix(rule, "MaxSize(") {
- return rule[8 : len(rule)-1]
- }
- }
- return ""
-}
-
-func validate(errs *binding.Errors, data base.TmplData, f Form) {
- if errs.Count() == 0 {
- return
- } else if len(errs.Overall) > 0 {
- for _, err := range errs.Overall {
- log.Error("%s: %v", reflect.TypeOf(f), err)
- }
- return
- }
-
- data["HasError"] = true
- AssignForm(f, data)
-
- typ := reflect.TypeOf(f)
- val := reflect.ValueOf(f)
-
- if typ.Kind() == reflect.Ptr {
- typ = typ.Elem()
- val = val.Elem()
- }
-
- for i := 0; i < typ.NumField(); i++ {
- field := typ.Field(i)
-
- fieldName := field.Tag.Get("form")
- // Allow ignored fields in the struct
- if fieldName == "-" {
- continue
- }
-
- if err, ok := errs.Fields[field.Name]; ok {
- data["Err_"+field.Name] = true
- switch err {
- case binding.BindingRequireError:
- data["ErrorMsg"] = f.Name(field.Name) + " cannot be empty"
- case binding.BindingAlphaDashError:
- data["ErrorMsg"] = f.Name(field.Name) + " must be valid alpha or numeric or dash(-_) characters"
- case binding.BindingAlphaDashDotError:
- data["ErrorMsg"] = f.Name(field.Name) + " must be valid alpha or numeric or dash(-_) or dot characters"
- case binding.BindingMinSizeError:
- data["ErrorMsg"] = f.Name(field.Name) + " must contain at least " + GetMinMaxSize(field) + " characters"
- case binding.BindingMaxSizeError:
- data["ErrorMsg"] = f.Name(field.Name) + " must contain at most " + GetMinMaxSize(field) + " characters"
- case binding.BindingEmailError:
- data["ErrorMsg"] = f.Name(field.Name) + " is not a valid e-mail address"
- case binding.BindingUrlError:
- data["ErrorMsg"] = f.Name(field.Name) + " is not a valid URL"
- default:
- data["ErrorMsg"] = "Unknown error: " + err
- }
- return
- }
- }
-}
-
-// AssignForm assign form values back to the template data.
-func AssignForm(form interface{}, data base.TmplData) {
- typ := reflect.TypeOf(form)
- val := reflect.ValueOf(form)
-
- if typ.Kind() == reflect.Ptr {
- typ = typ.Elem()
- val = val.Elem()
- }
-
- for i := 0; i < typ.NumField(); i++ {
- field := typ.Field(i)
-
- fieldName := field.Tag.Get("form")
- // Allow ignored fields in the struct
- if fieldName == "-" {
- continue
- }
-
- data[fieldName] = val.Field(i).Interface()
- }
-}
-
-type InstallForm struct {
- Database string `form:"database" binding:"Required"`
- Host string `form:"host"`
- User string `form:"user"`
- Passwd string `form:"passwd"`
- DatabaseName string `form:"database_name"`
- SslMode string `form:"ssl_mode"`
- DatabasePath string `form:"database_path"`
- RepoRootPath string `form:"repo_path"`
- RunUser string `form:"run_user"`
- Domain string `form:"domain"`
- AppUrl string `form:"app_url"`
- AdminName string `form:"admin_name" binding:"Required;AlphaDashDot;MaxSize(30)"`
- AdminPasswd string `form:"admin_pwd" binding:"Required;MinSize(6);MaxSize(30)"`
- AdminEmail string `form:"admin_email" binding:"Required;Email;MaxSize(50)"`
- SmtpHost string `form:"smtp_host"`
- SmtpEmail string `form:"mailer_user"`
- SmtpPasswd string `form:"mailer_pwd"`
- RegisterConfirm string `form:"register_confirm"`
- MailNotify string `form:"mail_notify"`
-}
-
-func (f *InstallForm) Name(field string) string {
- names := map[string]string{
- "Database": "Database name",
- "AdminName": "Admin user name",
- "AdminPasswd": "Admin password",
- "AdminEmail": "Admin e-maill address",
- }
- return names[field]
-}
-
-func (f *InstallForm) Validate(errors *binding.Errors, req *http.Request, context martini.Context) {
- data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errors, data, f)
-}
-
-// SignedInId returns the id of signed in user.
-func SignedInId(header http.Header, sess session.SessionStore) int64 {
- if !models.HasEngine {
- return 0
- }
-
- if setting.Service.EnableReverseProxyAuth {
- webAuthUser := header.Get(setting.ReverseProxyAuthUser)
- if len(webAuthUser) > 0 {
- u, err := models.GetUserByName(webAuthUser)
- if err != nil {
- if err != models.ErrUserNotExist {
- log.Error("auth.user.SignedInId(GetUserByName): %v", err)
- }
- return 0
- }
- return u.Id
- }
- }
-
- uid := sess.Get("userId")
- if uid == nil {
- return 0
- }
- if id, ok := uid.(int64); ok {
- if _, err := models.GetUserById(id); err != nil {
- if err != models.ErrUserNotExist {
- log.Error("auth.user.SignedInId(GetUserById): %v", err)
- }
- return 0
- }
- return id
- }
- return 0
-}
-
-// SignedInUser returns the user object of signed user.
-func SignedInUser(header http.Header, sess session.SessionStore) *models.User {
- uid := SignedInId(header, sess)
- if uid <= 0 {
- return nil
- }
-
- u, err := models.GetUserById(uid)
- if err != nil {
- log.Error("user.SignedInUser: %v", err)
- return nil
- }
- return u
-}
-
-// IsSignedIn check if any user has signed in.
-func IsSignedIn(header http.Header, sess session.SessionStore) bool {
- return SignedInId(header, sess) > 0
-}
-
-type FeedsForm struct {
- UserId int64 `form:"userid" binding:"Required"`
- Page int64 `form:"p"`
-}
-
-type UpdateProfileForm struct {
- UserName string `form:"username" binding:"Required;AlphaDash;MaxSize(30)"`
- FullName string `form:"fullname" binding:"MaxSize(40)"`
- Email string `form:"email" binding:"Required;Email;MaxSize(50)"`
- Website string `form:"website" binding:"Url;MaxSize(50)"`
- Location string `form:"location" binding:"MaxSize(50)"`
- Avatar string `form:"avatar" binding:"Required;Email;MaxSize(50)"`
-}
-
-func (f *UpdateProfileForm) Name(field string) string {
- names := map[string]string{
- "UserName": "Username",
- "Email": "E-mail address",
- "Website": "Website address",
- "Location": "Location",
- "Avatar": "Gravatar Email",
- }
- return names[field]
-}
-
-func (f *UpdateProfileForm) Validate(errs *binding.Errors, req *http.Request, ctx martini.Context) {
- data := ctx.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errs, data, f)
-}
-
-type UpdatePasswdForm struct {
- OldPasswd string `form:"oldpasswd" binding:"Required;MinSize(6);MaxSize(30)"`
- NewPasswd string `form:"newpasswd" binding:"Required;MinSize(6);MaxSize(30)"`
- RetypePasswd string `form:"retypepasswd"`
-}
-
-func (f *UpdatePasswdForm) Name(field string) string {
- names := map[string]string{
- "OldPasswd": "Old password",
- "NewPasswd": "New password",
- "RetypePasswd": "Re-type password",
- }
- return names[field]
-}
-
-func (f *UpdatePasswdForm) Validate(errs *binding.Errors, req *http.Request, ctx martini.Context) {
- data := ctx.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData)
- validate(errs, data, f)
-}
diff --git a/modules/auth/user_form.go b/modules/auth/user_form.go
new file mode 100644
index 0000000000..30080e859b
--- /dev/null
+++ b/modules/auth/user_form.go
@@ -0,0 +1,98 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package auth
+
+import (
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
+
+ "github.com/gogits/gogs/modules/middleware/binding"
+)
+
+type InstallForm struct {
+ Database string `form:"database" binding:"Required"`
+ Host string `form:"host"`
+ User string `form:"user"`
+ Passwd string `form:"passwd"`
+ DatabaseName string `form:"database_name"`
+ SslMode string `form:"ssl_mode"`
+ DatabasePath string `form:"database_path"`
+ RepoRootPath string `form:"repo_path"`
+ RunUser string `form:"run_user"`
+ Domain string `form:"domain"`
+ AppUrl string `form:"app_url"`
+ AdminName string `form:"admin_name" binding:"Required;AlphaDashDot;MaxSize(30)"`
+ AdminPasswd string `form:"admin_pwd" binding:"Required;MinSize(6);MaxSize(30)"`
+ AdminEmail string `form:"admin_email" binding:"Required;Email;MaxSize(50)"`
+ SmtpHost string `form:"smtp_host"`
+ SmtpEmail string `form:"mailer_user"`
+ SmtpPasswd string `form:"mailer_pwd"`
+ RegisterConfirm string `form:"register_confirm"`
+ MailNotify string `form:"mail_notify"`
+}
+
+func (f *InstallForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+// _____ ____ _________________ ___
+// / _ \ | | \__ ___/ | \
+// / /_\ \| | / | | / ~ \
+// / | \ | / | | \ Y /
+// \____|__ /______/ |____| \___|_ /
+// \/ \/
+
+type RegisterForm struct {
+ UserName string `form:"uname" binding:"Required;AlphaDashDot;MaxSize(35)"`
+ Email string `form:"email" binding:"Required;Email;MaxSize(50)"`
+ Password string `form:"password" binding:"Required;MinSize(6);MaxSize(30)"`
+ Retype string `form:"retype"`
+ LoginType string `form:"logintype"`
+ LoginName string `form:"loginname"`
+}
+
+func (f *RegisterForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+type SignInForm struct {
+ UserName string `form:"uname" binding:"Required;MaxSize(35)"`
+ Password string `form:"password" binding:"Required;MinSize(6);MaxSize(30)"`
+ Remember bool `form:"remember"`
+}
+
+func (f *SignInForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+// __________________________________________.___ _______ ________ _________
+// / _____/\_ _____/\__ ___/\__ ___/| |\ \ / _____/ / _____/
+// \_____ \ | __)_ | | | | | |/ | \/ \ ___ \_____ \
+// / \ | \ | | | | | / | \ \_\ \/ \
+// /_______ //_______ / |____| |____| |___\____|__ /\______ /_______ /
+// \/ \/ \/ \/ \/
+
+type UpdateProfileForm struct {
+ UserName string `form:"uname" binding:"Required;MaxSize(35)"`
+ FullName string `form:"fullname" binding:"MaxSize(40)"`
+ Email string `form:"email" binding:"Required;Email;MaxSize(50)"`
+ Website string `form:"website" binding:"Url;MaxSize(50)"`
+ Location string `form:"location" binding:"MaxSize(50)"`
+ Avatar string `form:"avatar" binding:"Required;Email;MaxSize(50)"`
+}
+
+func (f *UpdateProfileForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
+type ChangePasswordForm struct {
+ OldPassword string `form:"old_password" binding:"Required;MinSize(6);MaxSize(30)"`
+ Password string `form:"password" binding:"Required;MinSize(6);MaxSize(30)"`
+ Retype string `form:"retype"`
+}
+
+func (f *ChangePasswordForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
diff --git a/modules/base/base.go b/modules/base/base.go
index 570600c3d4..cb51478292 100644
--- a/modules/base/base.go
+++ b/modules/base/base.go
@@ -5,9 +5,7 @@
package base
type (
- // Type TmplData represents data in the templates.
- TmplData map[string]interface{}
- TplName string
+ TplName string
ApiJsonErr struct {
Message string `json:"message"`
diff --git a/modules/base/template.go b/modules/base/template.go
index 8df8d82498..7589fdaafb 100644
--- a/modules/base/template.go
+++ b/modules/base/template.go
@@ -51,7 +51,7 @@ var mailDomains = map[string]string{
var TemplateFuncs template.FuncMap = map[string]interface{}{
"GoVer": func() string {
- return runtime.Version()
+ return strings.Title(runtime.Version())
},
"AppName": func() string {
return setting.AppName
@@ -69,7 +69,8 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{
return fmt.Sprint(time.Since(startTime).Nanoseconds()/1e6) + "ms"
},
"AvatarLink": AvatarLink,
- "str2html": Str2html,
+ "str2html": Str2html, // TODO: Legacy
+ "Str2html": Str2html,
"TimeSince": TimeSince,
"FileSize": FileSize,
"Subtract": Subtract,
@@ -98,10 +99,14 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{
"DiffTypeToStr": DiffTypeToStr,
"DiffLineTypeToStr": DiffLineTypeToStr,
"ShortSha": ShortSha,
- "Oauth2Icon": Oauth2Icon,
- "Oauth2Name": Oauth2Name,
+ "Md5": EncodeMd5,
+ "ActionContent2Commits": ActionContent2Commits,
+ "Oauth2Icon": Oauth2Icon,
+ "Oauth2Name": Oauth2Name,
+ "CreateCaptcha": func() string { return "" },
}
+// TODO: Legacy
type Actioner interface {
GetOpType() int
GetActUserName() string
@@ -117,11 +122,11 @@ type Actioner interface {
func ActionIcon(opType int) string {
switch opType {
case 1: // Create repository.
- return "plus-circle"
+ return "repo"
case 5, 9: // Commit repository.
- return "arrow-circle-o-right"
+ return "git-commit"
case 6: // Create issue.
- return "exclamation-circle"
+ return "issue-opened"
case 8: // Transfer repository.
return "share"
case 10: // Comment issue.
@@ -131,6 +136,7 @@ func ActionIcon(opType int) string {
}
}
+// TODO: Legacy
const (
TPL_CREATE_REPO = `<a href="/user/%s">%s</a> created repository <a href="/%s">%s</a>`
TPL_COMMIT_REPO = `<a href="/user/%s">%s</a> pushed to <a href="/%s/src/%s">%s</a> at <a href="/%s">%s</a>%s`
@@ -155,6 +161,15 @@ type PushCommits struct {
Commits []*PushCommit
}
+func ActionContent2Commits(act Actioner) *PushCommits {
+ var push *PushCommits
+ if err := json.Unmarshal([]byte(act.GetContent()), &push); err != nil {
+ return nil
+ }
+ return push
+}
+
+// TODO: Legacy
// ActionDesc accepts int that represents action operation type
// and returns the description.
func ActionDesc(act Actioner) string {
diff --git a/modules/base/tool.go b/modules/base/tool.go
index 9635f13e0f..830c37f697 100644
--- a/modules/base/tool.go
+++ b/modules/base/tool.go
@@ -13,10 +13,13 @@ import (
"fmt"
"hash"
"math"
- "strconv"
+ r "math/rand"
"strings"
"time"
+ "github.com/Unknwon/com"
+ "github.com/Unknwon/i18n"
+
"github.com/gogits/gogs/modules/setting"
)
@@ -42,6 +45,33 @@ func GetRandomString(n int, alphabets ...byte) string {
return string(bytes)
}
+// RandomCreateBytes generate random []byte by specify chars.
+func RandomCreateBytes(n int, alphabets ...byte) []byte {
+ const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
+ var bytes = make([]byte, n)
+ var randby bool
+ if num, err := rand.Read(bytes); num != n || err != nil {
+ r.Seed(time.Now().UnixNano())
+ randby = true
+ }
+ for i, b := range bytes {
+ if len(alphabets) == 0 {
+ if randby {
+ bytes[i] = alphanum[r.Intn(len(alphanum))]
+ } else {
+ bytes[i] = alphanum[b%byte(len(alphanum))]
+ }
+ } else {
+ if randby {
+ bytes[i] = alphabets[r.Intn(len(alphabets))]
+ } else {
+ bytes[i] = alphabets[b%byte(len(alphabets))]
+ }
+ }
+ }
+ return bytes
+}
+
// http://code.google.com/p/go/source/browse/pbkdf2/pbkdf2.go?repo=crypto
func PBKDF2(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte {
prf := hmac.New(h, password)
@@ -89,7 +119,7 @@ func VerifyTimeLimitCode(data string, minutes int, code string) bool {
// split code
start := code[:12]
lives := code[12:18]
- if d, err := StrTo(lives).Int(); err == nil {
+ if d, err := com.StrTo(lives).Int(); err == nil {
minutes = d
}
@@ -133,7 +163,7 @@ func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string
// create sha1 encode string
sh := sha1.New()
- sh.Write([]byte(data + setting.SecretKey + startStr + endStr + ToStr(minutes)))
+ sh.Write([]byte(data + setting.SecretKey + startStr + endStr + com.ToStr(minutes)))
encoded := hex.EncodeToString(sh.Sum(nil))
code := fmt.Sprintf("%s%06d%s", startStr, minutes, encoded)
@@ -240,53 +270,53 @@ func TimeSincePro(then time.Time) string {
}
// TimeSince calculates the time interval and generate user-friendly string.
-func TimeSince(then time.Time) string {
+func TimeSince(then time.Time, lang string) string {
now := time.Now()
- lbl := "ago"
+ lbl := i18n.Tr(lang, "tool.ago")
diff := now.Unix() - then.Unix()
if then.After(now) {
- lbl = "from now"
+ lbl = i18n.Tr(lang, "tool.from_now")
diff = then.Unix() - now.Unix()
}
switch {
case diff <= 0:
- return "now"
+ return i18n.Tr(lang, "tool.now")
case diff <= 2:
- return fmt.Sprintf("1 second %s", lbl)
+ return i18n.Tr(lang, "tool.1s", lbl)
case diff < 1*Minute:
- return fmt.Sprintf("%d seconds %s", diff, lbl)
+ return i18n.Tr(lang, "tool.seconds", diff, lbl)
case diff < 2*Minute:
- return fmt.Sprintf("1 minute %s", lbl)
+ return i18n.Tr(lang, "tool.1m", lbl)
case diff < 1*Hour:
- return fmt.Sprintf("%d minutes %s", diff/Minute, lbl)
+ return i18n.Tr(lang, "tool.minutes", diff/Minute, lbl)
case diff < 2*Hour:
- return fmt.Sprintf("1 hour %s", lbl)
+ return i18n.Tr(lang, "tool.1h", lbl)
case diff < 1*Day:
- return fmt.Sprintf("%d hours %s", diff/Hour, lbl)
+ return i18n.Tr(lang, "tool.hours", diff/Hour, lbl)
case diff < 2*Day:
- return fmt.Sprintf("1 day %s", lbl)
+ return i18n.Tr(lang, "tool.1d", lbl)
case diff < 1*Week:
- return fmt.Sprintf("%d days %s", diff/Day, lbl)
+ return i18n.Tr(lang, "tool.days", diff/Day, lbl)
case diff < 2*Week:
- return fmt.Sprintf("1 week %s", lbl)
+ return i18n.Tr(lang, "tool.1w", lbl)
case diff < 1*Month:
- return fmt.Sprintf("%d weeks %s", diff/Week, lbl)
+ return i18n.Tr(lang, "tool.weeks", diff/Week, lbl)
case diff < 2*Month:
- return fmt.Sprintf("1 month %s", lbl)
+ return i18n.Tr(lang, "tool.1mon", lbl)
case diff < 1*Year:
- return fmt.Sprintf("%d months %s", diff/Month, lbl)
+ return i18n.Tr(lang, "tool.months", diff/Month, lbl)
case diff < 2*Year:
- return fmt.Sprintf("1 year %s", lbl)
+ return i18n.Tr(lang, "tool.1y", lbl)
default:
- return fmt.Sprintf("%d years %s", diff/Year, lbl)
+ return i18n.Tr(lang, "tool.years", diff/Year, lbl)
}
}
@@ -439,88 +469,3 @@ func DateFormat(t time.Time, format string) string {
format = replacer.Replace(format)
return t.Format(format)
}
-
-// convert string to specify type
-
-type StrTo string
-
-func (f StrTo) Exist() bool {
- return string(f) != string(0x1E)
-}
-
-func (f StrTo) Int() (int, error) {
- v, err := strconv.ParseInt(f.String(), 10, 32)
- return int(v), err
-}
-
-func (f StrTo) Int64() (int64, error) {
- v, err := strconv.ParseInt(f.String(), 10, 64)
- return int64(v), err
-}
-
-func (f StrTo) MustInt() int {
- v, _ := f.Int()
- return v
-}
-
-func (f StrTo) MustInt64() int64 {
- v, _ := f.Int64()
- return v
-}
-
-func (f StrTo) String() string {
- if f.Exist() {
- return string(f)
- }
- return ""
-}
-
-// convert any type to string
-func ToStr(value interface{}, args ...int) (s string) {
- switch v := value.(type) {
- case bool:
- s = strconv.FormatBool(v)
- case float32:
- s = strconv.FormatFloat(float64(v), 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 32))
- case float64:
- s = strconv.FormatFloat(v, 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 64))
- case int:
- s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
- case int8:
- s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
- case int16:
- s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
- case int32:
- s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
- case int64:
- s = strconv.FormatInt(v, argInt(args).Get(0, 10))
- case uint:
- s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
- case uint8:
- s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
- case uint16:
- s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
- case uint32:
- s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
- case uint64:
- s = strconv.FormatUint(v, argInt(args).Get(0, 10))
- case string:
- s = v
- case []byte:
- s = string(v)
- default:
- s = fmt.Sprintf("%v", v)
- }
- return s
-}
-
-type argInt []int
-
-func (a argInt) Get(i int, args ...int) (r int) {
- if i >= 0 && i < len(a) {
- r = a[i]
- } else if len(args) > 0 {
- r = args[0]
- }
- return
-}
diff --git a/modules/bin/conf.go b/modules/bin/conf.go
deleted file mode 100644
index fa0822d732..0000000000
--- a/modules/bin/conf.go
+++ /dev/null
@@ -1,3623 +0,0 @@
-package bin
-
-import (
- "bytes"
- "compress/gzip"
- "fmt"
- "io"
- "strings"
-)
-
-func bindata_read(data []byte, name string) ([]byte, error) {
- gz, err := gzip.NewReader(bytes.NewBuffer(data))
- if err != nil {
- return nil, fmt.Errorf("Read %q: %v", name, err)
- }
-
- var buf bytes.Buffer
- _, err = io.Copy(&buf, gz)
- gz.Close()
-
- if err != nil {
- return nil, fmt.Errorf("Read %q: %v", name, err)
- }
-
- return buf.Bytes(), nil
-}
-
-func conf_app_ini() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0xb4, 0x59,
- 0xeb, 0x72, 0xdb, 0xc8, 0x95, 0xfe, 0x8f, 0xa7, 0x68, 0x73, 0x67, 0x76,
- 0xec, 0x2d, 0x89, 0xa4, 0xe4, 0xb5, 0xec, 0x91, 0xc7, 0xb5, 0xa6, 0x48,
- 0x50, 0xc2, 0x9a, 0x17, 0x0d, 0x00, 0xc9, 0xa3, 0xb8, 0x54, 0x28, 0x08,
- 0x68, 0x92, 0x1d, 0x01, 0x68, 0x08, 0xdd, 0x14, 0xc5, 0xfc, 0xcb, 0x2b,
- 0xa4, 0xf2, 0x34, 0x79, 0x9e, 0xfc, 0xc8, 0x63, 0xe4, 0x3b, 0x0d, 0x80,
- 0x02, 0x65, 0x8e, 0xc6, 0xb9, 0x55, 0x52, 0x16, 0xd1, 0xdd, 0xe7, 0xf4,
- 0xb9, 0x7c, 0xe7, 0xd6, 0xf3, 0x9e, 0xf5, 0xf2, 0x9c, 0x65, 0x61, 0xca,
- 0x99, 0x5e, 0x84, 0x9a, 0xa9, 0x85, 0x5c, 0x29, 0x26, 0x33, 0xc6, 0xef,
- 0x79, 0xb1, 0x66, 0x79, 0x38, 0xc7, 0x86, 0xd0, 0x09, 0xb7, 0x7a, 0xe7,
- 0xe7, 0xc1, 0xa4, 0x37, 0xb6, 0xd9, 0x07, 0x76, 0x2a, 0xe7, 0xea, 0x18,
- 0xff, 0xb2, 0x53, 0xa1, 0x99, 0xc7, 0x8b, 0x7b, 0x11, 0x95, 0xfb, 0xa3,
- 0xe9, 0xe9, 0x14, 0xfb, 0x22, 0x9d, 0x77, 0x66, 0x21, 0x56, 0x65, 0xd6,
- 0xce, 0xb3, 0xb9, 0xf5, 0x9e, 0xf5, 0x17, 0x61, 0x06, 0x4e, 0x38, 0x2e,
- 0x66, 0x6c, 0x2d, 0x97, 0xac, 0x58, 0x66, 0x2c, 0x91, 0x51, 0x98, 0x24,
- 0x6b, 0xcb, 0xbd, 0x98, 0x04, 0x17, 0x9e, 0xed, 0x82, 0x72, 0x2e, 0x34,
- 0x4e, 0xdb, 0x42, 0x2f, 0x78, 0xc1, 0x5a, 0x31, 0xbf, 0x6f, 0xed, 0xb1,
- 0x56, 0x5e, 0xc8, 0xb8, 0xc5, 0x24, 0x16, 0x34, 0x57, 0x1a, 0x2b, 0x31,
- 0x9f, 0x85, 0xcb, 0x04, 0xbc, 0x54, 0x79, 0xc6, 0x70, 0x18, 0x4f, 0x07,
- 0x24, 0x1b, 0xbe, 0x2d, 0xeb, 0x4b, 0xc1, 0x73, 0xa9, 0x84, 0x96, 0xc5,
- 0xfa, 0xda, 0x72, 0xa7, 0x53, 0x1f, 0x1b, 0x96, 0xd7, 0x77, 0x9d, 0x73,
- 0x3f, 0xf0, 0xaf, 0xce, 0xe9, 0xdc, 0x4d, 0xa8, 0x16, 0x38, 0xa8, 0x20,
- 0x3d, 0x2f, 0xae, 0xad, 0x73, 0x77, 0xea, 0x4f, 0xfb, 0xd3, 0x11, 0x76,
- 0x16, 0x5a, 0xe7, 0xd6, 0x60, 0x3a, 0xee, 0x39, 0x13, 0x7c, 0x19, 0x21,
- 0x17, 0x52, 0x69, 0xc3, 0x27, 0xb8, 0x70, 0xe9, 0xc8, 0xf7, 0x2f, 0xeb,
- 0xf3, 0xaf, 0xd4, 0x71, 0xa7, 0xf3, 0xfd, 0xcb, 0xf2, 0x38, 0x3e, 0xbe,
- 0x7f, 0x79, 0xe6, 0xfb, 0xe7, 0xc1, 0xf9, 0xd4, 0xf5, 0x5f, 0xa9, 0x8e,
- 0x65, 0x3e, 0x7a, 0x83, 0x01, 0xe9, 0x66, 0x6d, 0x76, 0xf0, 0xf1, 0xba,
- 0xdb, 0xed, 0x5a, 0x9e, 0x77, 0x56, 0x7f, 0x1f, 0x1e, 0x42, 0xef, 0x81,
- 0x50, 0xe1, 0x4d, 0xc2, 0x59, 0x7f, 0x30, 0x21, 0xfb, 0x67, 0x4c, 0x64,
- 0xb5, 0xf6, 0xa9, 0x8c, 0xb9, 0x35, 0x1d, 0x0e, 0x47, 0xce, 0xc4, 0xae,
- 0x55, 0x9d, 0x85, 0x89, 0xe2, 0xd6, 0xc0, 0xf1, 0x7a, 0x27, 0x23, 0x3b,
- 0x70, 0xa7, 0x17, 0xbe, 0xed, 0x92, 0x0b, 0x36, 0x5b, 0xef, 0xd9, 0x29,
- 0xcf, 0x78, 0x11, 0x6a, 0xce, 0x94, 0xe6, 0xb9, 0x3a, 0xc6, 0xca, 0x77,
- 0x2c, 0x8a, 0xe1, 0x56, 0xbd, 0xe8, 0x68, 0xd9, 0x99, 0xc3, 0x91, 0x9d,
- 0x68, 0xa9, 0xb4, 0x4c, 0x3b, 0xa4, 0xb6, 0x32, 0x07, 0xe6, 0xd2, 0xb8,
- 0xe7, 0xbb, 0xd3, 0x29, 0xa9, 0xdc, 0x51, 0x45, 0xd4, 0xc9, 0x6f, 0xe7,
- 0x9d, 0xa8, 0x58, 0xe7, 0xa0, 0xd1, 0x89, 0xea, 0xcc, 0x2b, 0xb6, 0x41,
- 0xc4, 0x0b, 0xdd, 0xc6, 0xf9, 0xfd, 0x28, 0xfc, 0xa0, 0x8b, 0x25, 0x67,
- 0xfb, 0xf1, 0x12, 0x1b, 0x42, 0x66, 0x1f, 0xde, 0xbd, 0x3d, 0xea, 0x2e,
- 0xba, 0x69, 0x57, 0xb1, 0x7d, 0x32, 0xdf, 0x87, 0x74, 0x4d, 0x7f, 0xda,
- 0xfc, 0x21, 0x4c, 0xf3, 0x84, 0xb7, 0x23, 0x99, 0x5a, 0x7d, 0xdb, 0xf5,
- 0x83, 0xa1, 0x33, 0x22, 0x65, 0x9a, 0x52, 0x74, 0x0c, 0xdb, 0x9c, 0xa7,
- 0xd6, 0x27, 0xfb, 0x6a, 0xe7, 0x81, 0x5b, 0xbe, 0x36, 0xfb, 0xef, 0xd9,
- 0x45, 0x9e, 0x03, 0x2a, 0x09, 0xcc, 0x95, 0x30, 0x39, 0x63, 0x9a, 0x83,
- 0x3b, 0x29, 0x1c, 0x66, 0x31, 0x94, 0x86, 0x28, 0x11, 0x9b, 0x09, 0xd8,
- 0x94, 0x54, 0xc6, 0xf1, 0x06, 0x74, 0x80, 0x31, 0xb3, 0xca, 0x56, 0x00,
- 0x1b, 0x37, 0xa0, 0xa6, 0x65, 0xfe, 0xc0, 0xa3, 0xa5, 0xe6, 0xb1, 0xe5,
- 0xf9, 0x3d, 0xdf, 0xe9, 0x07, 0xc6, 0xed, 0xe7, 0x3d, 0xff, 0x8c, 0x5c,
- 0x68, 0x7d, 0x89, 0x43, 0x1d, 0x02, 0x3b, 0xfc, 0xba, 0x81, 0xd3, 0x74,
- 0xad, 0xee, 0x12, 0x83, 0x54, 0x68, 0x38, 0x2f, 0xb8, 0x2a, 0xd1, 0x8a,
- 0x45, 0xa1, 0xf9, 0x6b, 0x6c, 0x08, 0xfd, 0x83, 0x22, 0xd8, 0x17, 0x2c,
- 0x5a, 0x48, 0x0a, 0x96, 0xc1, 0x49, 0x8d, 0x43, 0x43, 0x6b, 0x9d, 0x4d,
- 0x3d, 0x42, 0xc1, 0xc1, 0xe1, 0xdb, 0x76, 0x17, 0xff, 0x3b, 0x38, 0x7e,
- 0xfd, 0xba, 0x7b, 0x64, 0x55, 0xe1, 0x46, 0x5e, 0xb2, 0xaa, 0x00, 0x29,
- 0xa4, 0xd4, 0xd6, 0x79, 0xcf, 0xf3, 0x3e, 0x0f, 0xd8, 0x07, 0x88, 0x30,
- 0xa4, 0x8b, 0x1a, 0xd7, 0x66, 0xc9, 0x7a, 0x8f, 0xf1, 0x3a, 0x7e, 0x4a,
- 0x3c, 0x91, 0x64, 0x05, 0xbf, 0x5b, 0x8a, 0x82, 0x97, 0x82, 0x01, 0xf1,
- 0x62, 0xb6, 0xde, 0x9f, 0x2d, 0x93, 0xa4, 0x05, 0x10, 0x8e, 0x36, 0xb1,
- 0x53, 0x9e, 0xaf, 0xd9, 0xd6, 0xf2, 0x1b, 0xae, 0x56, 0x65, 0x02, 0xd2,
- 0xdf, 0xe0, 0xa6, 0x1d, 0xdf, 0xc0, 0x1c, 0x61, 0x9c, 0x8a, 0xec, 0xda,
- 0x04, 0x52, 0xb4, 0x2c, 0x84, 0x46, 0xbc, 0x39, 0x13, 0x58, 0x6e, 0x34,
- 0x02, 0x12, 0xfb, 0x9f, 0x1a, 0x50, 0x7c, 0xf1, 0xa2, 0x7f, 0xd6, 0x9b,
- 0x9c, 0xda, 0xcc, 0x3f, 0x73, 0x3c, 0xe6, 0x4f, 0xd9, 0x27, 0xdb, 0x3e,
- 0x67, 0x57, 0xd3, 0x0b, 0x97, 0x19, 0xdd, 0x06, 0x3d, 0xbf, 0xc7, 0xbc,
- 0xde, 0xd0, 0x7e, 0xf1, 0xc2, 0xf2, 0xec, 0xbe, 0x6b, 0xfb, 0x01, 0xbc,
- 0x0f, 0x06, 0x2f, 0xfe, 0xeb, 0xe3, 0x70, 0x60, 0x7f, 0x76, 0xf1, 0xff,
- 0xff, 0xfe, 0x9f, 0x97, 0xe0, 0xd4, 0x5b, 0x6a, 0xb9, 0x9f, 0xc8, 0x39,
- 0xa2, 0xa3, 0xe0, 0x29, 0x4f, 0x6f, 0xa0, 0x6b, 0x1c, 0xae, 0x95, 0x05,
- 0xec, 0x3b, 0x93, 0xc0, 0xb5, 0xc7, 0xf6, 0xf8, 0x04, 0xa1, 0x30, 0xe8,
- 0x5d, 0x79, 0xa0, 0x7f, 0x6b, 0xf5, 0xa7, 0xd3, 0x4f, 0x8e, 0x6d, 0x72,
- 0x4c, 0xc3, 0xa4, 0x41, 0xb8, 0xe2, 0x4a, 0xa6, 0xbc, 0xde, 0xde, 0xd0,
- 0x35, 0xcf, 0x88, 0x2c, 0x2a, 0x78, 0x2c, 0x4a, 0xab, 0xb8, 0x94, 0x14,
- 0x15, 0x50, 0x53, 0xc8, 0x87, 0x35, 0x0b, 0x97, 0xb0, 0x72, 0x06, 0x80,
- 0x19, 0xbc, 0xb3, 0x05, 0x0f, 0x63, 0x08, 0x62, 0x52, 0x29, 0x80, 0xb8,
- 0x54, 0xd5, 0x87, 0xe5, 0xda, 0x97, 0xb6, 0xeb, 0xd9, 0x01, 0x52, 0xc6,
- 0x2f, 0x57, 0x41, 0xef, 0xc2, 0x3f, 0xb3, 0x27, 0x00, 0x16, 0xc0, 0x35,
- 0xdd, 0xe4, 0xbd, 0x5f, 0xf6, 0x3f, 0xdb, 0x27, 0xb4, 0xb5, 0x4f, 0x0b,
- 0x55, 0x5e, 0x02, 0x50, 0xae, 0xad, 0x5e, 0xdf, 0x77, 0x2e, 0xed, 0xa0,
- 0x0f, 0x0f, 0x05, 0x23, 0xfa, 0x35, 0x76, 0x26, 0x08, 0x74, 0x52, 0xec,
- 0xe0, 0x5d, 0x17, 0xcc, 0x3d, 0x9b, 0xe0, 0x49, 0x80, 0xf8, 0xd5, 0x43,
- 0x88, 0x12, 0x23, 0x0d, 0xe7, 0x31, 0xd3, 0x92, 0x21, 0x2d, 0xcf, 0x44,
- 0x91, 0x32, 0xbe, 0x9f, 0x86, 0x22, 0x61, 0x33, 0xf8, 0xba, 0xe0, 0x73,
- 0xa1, 0x74, 0x19, 0xb9, 0xe0, 0x79, 0xea, 0x78, 0x94, 0x4b, 0x6c, 0x24,
- 0xb5, 0x11, 0xb8, 0x4e, 0x86, 0x8e, 0x3b, 0x6e, 0xb8, 0x72, 0x20, 0xb9,
- 0x62, 0x99, 0xd4, 0x0c, 0xe9, 0x5b, 0xae, 0x2a, 0x62, 0x5c, 0x40, 0x31,
- 0x67, 0x00, 0xc1, 0x60, 0x34, 0x13, 0x84, 0x51, 0x24, 0x97, 0x99, 0x2e,
- 0x01, 0xb4, 0x49, 0x54, 0x86, 0xbd, 0x6b, 0xf4, 0x6f, 0x30, 0x35, 0x22,
- 0xa6, 0x08, 0x72, 0xa6, 0xc4, 0xdc, 0xa4, 0x3e, 0x88, 0x7a, 0x2f, 0xf8,
- 0x0a, 0x6c, 0xd7, 0x7a, 0x21, 0xb2, 0x79, 0x1b, 0x92, 0xfd, 0x7c, 0xe1,
- 0xb8, 0x76, 0xe0, 0x39, 0xa7, 0x13, 0x78, 0xfa, 0xd2, 0xb1, 0x3f, 0x37,
- 0x38, 0xf4, 0xc3, 0x08, 0x21, 0x1d, 0xde, 0x03, 0xa1, 0x90, 0x45, 0xb1,
- 0x5c, 0x44, 0x7a, 0x59, 0x70, 0xcb, 0x9e, 0x98, 0x7b, 0xfb, 0xbd, 0xfe,
- 0x99, 0x1d, 0xf4, 0x2e, 0x81, 0x33, 0xb7, 0x41, 0x35, 0x26, 0x1b, 0x40,
- 0x19, 0x31, 0xab, 0x3c, 0x59, 0x9f, 0x9f, 0x4c, 0x7d, 0x67, 0x78, 0x15,
- 0x90, 0x0d, 0x9a, 0xc7, 0x25, 0x72, 0x45, 0xcc, 0x35, 0xa8, 0x8e, 0x4d,
- 0xa9, 0xa0, 0x02, 0x80, 0xb2, 0xb5, 0x58, 0xde, 0x50, 0x4e, 0xa3, 0xd0,
- 0x10, 0x5a, 0x95, 0x99, 0x55, 0x28, 0xb5, 0xe4, 0xaa, 0x73, 0x70, 0xf4,
- 0xa6, 0xe6, 0xf9, 0x1c, 0x16, 0x36, 0x97, 0x58, 0x5f, 0x56, 0xfc, 0x66,
- 0x21, 0xe5, 0x2d, 0xe5, 0x98, 0x7e, 0x01, 0x6c, 0xe9, 0x50, 0xdd, 0xc2,
- 0x22, 0xb0, 0xf1, 0x7d, 0x98, 0x90, 0x69, 0x60, 0x63, 0xe4, 0x28, 0x65,
- 0xf9, 0x3d, 0xef, 0x53, 0xe0, 0x4c, 0xe0, 0xac, 0xcb, 0x1e, 0x49, 0x79,
- 0x40, 0xde, 0xe1, 0x89, 0x00, 0x4e, 0x51, 0xb6, 0x53, 0x2e, 0x97, 0x9a,
- 0x8e, 0x23, 0x38, 0x65, 0x16, 0x2b, 0x6b, 0x60, 0x13, 0x3a, 0xdc, 0xc0,
- 0x77, 0xc6, 0x36, 0xca, 0x05, 0x08, 0xde, 0xe0, 0x36, 0x42, 0x01, 0xd5,
- 0xc0, 0x52, 0xc6, 0x41, 0x43, 0xd9, 0x93, 0xe5, 0x6c, 0x66, 0xb2, 0x6b,
- 0x36, 0x47, 0x9e, 0x04, 0xaa, 0x23, 0xd4, 0xf1, 0x8c, 0x27, 0x7b, 0xec,
- 0x96, 0xf3, 0x9c, 0xca, 0x39, 0xcc, 0x2c, 0x4c, 0x36, 0xad, 0xea, 0x7a,
- 0x2c, 0xb3, 0x1f, 0x34, 0xbb, 0xcd, 0x00, 0x8b, 0x15, 0xf5, 0x13, 0x66,
- 0xb3, 0x8d, 0x80, 0x9e, 0x0c, 0x82, 0x93, 0x8b, 0xe1, 0x90, 0x2a, 0x94,
- 0x4d, 0xaa, 0x1e, 0x10, 0x2c, 0x27, 0x14, 0x2c, 0xc8, 0x3a, 0x48, 0xd9,
- 0x6b, 0x60, 0x93, 0x14, 0x23, 0x6f, 0x94, 0x0d, 0x87, 0x77, 0x71, 0xf2,
- 0xff, 0x76, 0xdf, 0x37, 0xe5, 0xb6, 0x6e, 0x3e, 0x5e, 0xa9, 0xda, 0x63,
- 0x65, 0xe1, 0xa6, 0x12, 0x97, 0x1a, 0x57, 0xa8, 0x54, 0xe7, 0xed, 0x39,
- 0xfd, 0x26, 0x37, 0x1c, 0xbf, 0x79, 0xf7, 0x16, 0x7b, 0x3f, 0xff, 0x5c,
- 0x6d, 0xdc, 0xdd, 0x99, 0xd5, 0xc3, 0x37, 0x75, 0xa6, 0xad, 0xd9, 0xcc,
- 0x0a, 0x99, 0x02, 0xb3, 0x31, 0xb2, 0xa7, 0xb2, 0x86, 0xee, 0x74, 0xfc,
- 0xb8, 0x07, 0xc5, 0x37, 0x41, 0x6c, 0xa0, 0x9d, 0x87, 0x4a, 0xad, 0x64,
- 0x11, 0xd7, 0xb9, 0x78, 0x93, 0x87, 0xa9, 0x2e, 0x48, 0x4a, 0x07, 0x5f,
- 0xdb, 0xb0, 0xda, 0x68, 0x97, 0x08, 0xf9, 0x7a, 0xbf, 0x3f, 0x72, 0x80,
- 0x80, 0xc0, 0x31, 0x5c, 0xaa, 0x8f, 0x32, 0xfb, 0x95, 0x2d, 0xcb, 0xf4,
- 0xdc, 0x44, 0x71, 0x0d, 0xb4, 0x30, 0x17, 0xed, 0x06, 0xd8, 0x48, 0x3e,
- 0x8b, 0x50, 0x54, 0xf5, 0x25, 0x3b, 0xf0, 0x68, 0xf2, 0x64, 0xc7, 0x08,
- 0xd1, 0xa1, 0x7f, 0x64, 0x21, 0xfe, 0xc0, 0x2d, 0x7f, 0xfa, 0xc9, 0x9e,
- 0x7c, 0x23, 0x51, 0x14, 0xc1, 0x36, 0x81, 0x96, 0xb7, 0x3c, 0xb3, 0x4c,
- 0x4b, 0xa1, 0x59, 0x94, 0x08, 0x64, 0x3e, 0x26, 0xe2, 0xb2, 0xcc, 0x72,
- 0x84, 0xbb, 0x36, 0xa6, 0xc4, 0x7e, 0xcd, 0x0e, 0x88, 0x53, 0x12, 0x85,
- 0x3e, 0xa6, 0xd2, 0x2c, 0x51, 0xa4, 0x15, 0x1a, 0x05, 0x39, 0x2f, 0x4b,
- 0x7f, 0x07, 0x29, 0xf4, 0xf7, 0x3c, 0xd2, 0x1b, 0xf3, 0x98, 0x9d, 0x7f,
- 0xd9, 0x3c, 0xab, 0xd5, 0xaa, 0x62, 0x05, 0x43, 0x29, 0x73, 0x91, 0xd1,
- 0x81, 0xec, 0x24, 0xb2, 0x99, 0x6c, 0x73, 0x83, 0xaf, 0x6f, 0x3e, 0x0e,
- 0x29, 0xa9, 0x79, 0xd8, 0x65, 0xe2, 0x2a, 0xb5, 0x6d, 0x29, 0x25, 0x4b,
- 0x93, 0x1d, 0x1a, 0x2e, 0x3b, 0x6d, 0xfc, 0x2c, 0x55, 0x65, 0xe2, 0xca,
- 0x24, 0x77, 0x77, 0xff, 0xb4, 0x39, 0x90, 0x96, 0x0d, 0xf8, 0xd9, 0x5f,
- 0xff, 0xf2, 0xa7, 0xbf, 0xfd, 0xf1, 0xcf, 0x54, 0x32, 0x77, 0x60, 0xa4,
- 0x08, 0xf3, 0x45, 0x15, 0x18, 0x95, 0x04, 0xed, 0x6e, 0x03, 0x22, 0xef,
- 0xd9, 0x4e, 0x90, 0xec, 0xa4, 0x2a, 0x25, 0x07, 0x05, 0xcf, 0x22, 0x02,
- 0xc6, 0x8a, 0x8b, 0x1b, 0xb9, 0xcb, 0x6a, 0xc0, 0x41, 0xd6, 0xd6, 0x35,
- 0x7d, 0x34, 0x17, 0xfb, 0x37, 0x35, 0xd0, 0x0e, 0x7f, 0x03, 0x9e, 0xcf,
- 0x93, 0x6e, 0x81, 0xb4, 0xb2, 0xa0, 0x5e, 0x09, 0xad, 0x77, 0x25, 0xb6,
- 0x7f, 0xc0, 0x8c, 0xbb, 0x3c, 0x8f, 0x18, 0xac, 0x58, 0x3f, 0x5a, 0xe1,
- 0x37, 0x84, 0xff, 0x15, 0x9a, 0x5d, 0x52, 0x1b, 0xdb, 0xfd, 0x27, 0x64,
- 0x36, 0x8c, 0x1b, 0x7e, 0xfb, 0x06, 0x91, 0xbf, 0x26, 0xd9, 0x96, 0x38,
- 0xa2, 0x8a, 0xbb, 0xd5, 0x09, 0xf3, 0x14, 0x33, 0x57, 0xd9, 0x70, 0x22,
- 0xaf, 0xe3, 0x87, 0x2c, 0x57, 0xcd, 0xc9, 0x27, 0xa3, 0x5b, 0x75, 0xd8,
- 0xea, 0x0d, 0x7a, 0xe7, 0xbe, 0xc9, 0xa8, 0xe5, 0x4a, 0xdd, 0x7f, 0x56,
- 0xfb, 0x55, 0x53, 0x7b, 0xda, 0xdf, 0xaa, 0x80, 0x55, 0x49, 0xdb, 0xe2,
- 0x78, 0xd4, 0xb5, 0x1a, 0xb5, 0xf0, 0xa8, 0x5b, 0x33, 0x2a, 0x65, 0x31,
- 0xb9, 0xaa, 0x29, 0x0b, 0x18, 0x64, 0xc8, 0x41, 0xa6, 0x79, 0x43, 0x07,
- 0xbd, 0x29, 0x03, 0xef, 0x99, 0x21, 0x38, 0x66, 0xad, 0xe3, 0xa3, 0xee,
- 0xeb, 0x1f, 0x5b, 0x58, 0xa8, 0xa9, 0xb0, 0xf6, 0xd8, 0xa3, 0x1f, 0x1c,
- 0x1c, 0x1e, 0x1c, 0xb4, 0xaa, 0x8a, 0x62, 0x7a, 0x36, 0xa5, 0xc0, 0x6c,
- 0xb7, 0x3d, 0x28, 0x8f, 0x3c, 0xda, 0xa5, 0x34, 0x4b, 0x35, 0x36, 0xec,
- 0xb2, 0x09, 0x1a, 0x84, 0x4b, 0x67, 0x60, 0x8c, 0x62, 0x32, 0xd0, 0x7b,
- 0x76, 0x5e, 0xc8, 0x7b, 0x41, 0x1d, 0xa6, 0x69, 0xdf, 0xe6, 0x4c, 0xe6,
- 0x24, 0xb9, 0x2a, 0x85, 0x03, 0xcd, 0xb1, 0xe9, 0xc8, 0x16, 0xe1, 0x3d,
- 0x15, 0xab, 0x75, 0x7d, 0x6a, 0xcd, 0x69, 0xa0, 0x26, 0x16, 0xa8, 0x84,
- 0xa5, 0x7c, 0x8f, 0xf3, 0x10, 0x26, 0x85, 0xf6, 0xbc, 0x8d, 0x39, 0x81,
- 0x7a, 0xfa, 0x6a, 0x57, 0xb5, 0x1e, 0xf5, 0xaf, 0x78, 0x24, 0xe2, 0x96,
- 0x97, 0x4b, 0x55, 0xd5, 0x35, 0x96, 0xda, 0x63, 0xb9, 0x94, 0x89, 0x07,
- 0xf8, 0xec, 0x6d, 0x2a, 0x63, 0xcd, 0xf0, 0xd1, 0x46, 0x47, 0xaf, 0xdf,
- 0xfe, 0xb8, 0x77, 0xd0, 0xed, 0xee, 0x85, 0x18, 0xc6, 0x1e, 0x04, 0x37,
- 0xc6, 0x24, 0xbd, 0x8f, 0xd1, 0x5f, 0xef, 0xe3, 0xef, 0x7e, 0x5c, 0x50,
- 0xb7, 0xd2, 0x31, 0x8b, 0x2c, 0x56, 0x59, 0x7d, 0x2b, 0xda, 0x51, 0xf4,
- 0x7c, 0x35, 0x47, 0x9a, 0x7b, 0x8e, 0xeb, 0x6b, 0x3e, 0xd6, 0xc2, 0x06,
- 0xda, 0xcc, 0x37, 0x1b, 0x6b, 0x95, 0xbd, 0xea, 0x69, 0x3d, 0xa6, 0xd4,
- 0x2a, 0xe1, 0x4e, 0xaf, 0xd2, 0x3d, 0x42, 0x5b, 0x25, 0x78, 0xd9, 0x98,
- 0x57, 0x7d, 0x7f, 0xd5, 0xee, 0x8b, 0x80, 0xf4, 0x0c, 0xca, 0xfe, 0x0d,
- 0x14, 0x4e, 0xd9, 0xd0, 0xa0, 0x16, 0x6c, 0x0c, 0x07, 0xd8, 0x99, 0xe8,
- 0xa8, 0x10, 0xd9, 0xf0, 0x5b, 0x15, 0xa3, 0x25, 0x43, 0x84, 0xe5, 0x85,
- 0x6b, 0x37, 0xda, 0x28, 0x3b, 0x33, 0x63, 0xbd, 0xa2, 0xca, 0x69, 0xee,
- 0xdf, 0xa2, 0xa5, 0xb9, 0xb9, 0xee, 0x0f, 0xa9, 0x99, 0x2f, 0xb9, 0x80,
- 0xdc, 0x6c, 0x3c, 0x8a, 0x8e, 0x00, 0xa0, 0x96, 0x6e, 0x13, 0x05, 0x5b,
- 0x4c, 0xde, 0x1d, 0xfd, 0x6f, 0xb7, 0x6b, 0x9d, 0xf6, 0x37, 0xcd, 0xa0,
- 0xe9, 0xf1, 0xc0, 0xa4, 0xdc, 0x78, 0xe4, 0x92, 0x88, 0x19, 0x37, 0x7c,
- 0x76, 0x90, 0x7b, 0xb6, 0xe7, 0xd1, 0x50, 0x32, 0x72, 0x86, 0xf6, 0x53,
- 0xfa, 0x8d, 0x0d, 0x62, 0x60, 0x4c, 0x2d, 0xd8, 0x6c, 0x99, 0x45, 0x7b,
- 0x1b, 0x9c, 0xab, 0x45, 0x78, 0x40, 0xe8, 0xc6, 0xdf, 0xc3, 0x37, 0x47,
- 0x15, 0xbc, 0xe3, 0x37, 0xad, 0xe6, 0x1d, 0x74, 0x66, 0x73, 0x85, 0x33,
- 0x08, 0xce, 0x7a, 0xde, 0xd9, 0xf0, 0x62, 0xd2, 0xc7, 0x25, 0x66, 0xeb,
- 0x51, 0x46, 0x73, 0x01, 0x46, 0xfc, 0x2d, 0x11, 0xc9, 0x11, 0x05, 0x42,
- 0x18, 0xfd, 0x5a, 0x09, 0x8d, 0xa7, 0xbc, 0xcc, 0xb4, 0x88, 0x30, 0xac,
- 0xda, 0x7e, 0x0a, 0x43, 0x9f, 0x46, 0xfc, 0x24, 0x8c, 0x38, 0xcd, 0x12,
- 0xd5, 0xba, 0x81, 0xc6, 0xe3, 0x8c, 0x5c, 0x22, 0xba, 0x94, 0xf8, 0x4e,
- 0x64, 0x62, 0xf9, 0x24, 0x20, 0xab, 0x7d, 0x5c, 0xe6, 0x5e, 0x3a, 0x7d,
- 0xb2, 0x48, 0xd5, 0x79, 0xd6, 0xe3, 0xcc, 0xa9, 0xfb, 0x64, 0xa4, 0xb0,
- 0xbe, 0xa0, 0x7d, 0x2a, 0x9f, 0x9d, 0xaa, 0x77, 0x83, 0x46, 0x42, 0xa8,
- 0xba, 0xa2, 0x66, 0x46, 0xa0, 0x34, 0x64, 0x6c, 0x87, 0x46, 0xb5, 0x94,
- 0xa3, 0x7e, 0x63, 0x78, 0x22, 0x4a, 0x4d, 0x5b, 0x0e, 0x4b, 0x80, 0x52,
- 0x9a, 0x86, 0xa4, 0x98, 0xe2, 0x79, 0x68, 0x1e, 0x79, 0x52, 0x9c, 0x14,
- 0x39, 0x90, 0x46, 0xaf, 0x45, 0xaa, 0x0e, 0x9d, 0x8a, 0x6c, 0xcf, 0xc4,
- 0x7d, 0xcb, 0xaa, 0x66, 0xfd, 0x6a, 0xf5, 0xdf, 0xd9, 0xe4, 0x3f, 0xe9,
- 0xef, 0xbb, 0x06, 0x37, 0xb5, 0xe2, 0x7e, 0x01, 0x37, 0x90, 0x9a, 0x03,
- 0x7e, 0xb3, 0x9c, 0xd3, 0x0f, 0x07, 0x1d, 0x16, 0xfd, 0xfd, 0x1c, 0x16,
- 0x46, 0x7f, 0xbb, 0x28, 0x64, 0x41, 0x3f, 0xfa, 0x85, 0xa0, 0xa9, 0xfa,
- 0x69, 0x6a, 0x2c, 0x39, 0x58, 0x23, 0x8c, 0x50, 0x94, 0xde, 0xcd, 0xa7,
- 0x55, 0xa7, 0xf8, 0xda, 0x36, 0x46, 0xf5, 0x72, 0xde, 0x24, 0x37, 0xb4,
- 0xab, 0xf5, 0xeb, 0x0d, 0xd9, 0x86, 0xc2, 0x58, 0xe3, 0xe9, 0x71, 0x5a,
- 0x6c, 0x9c, 0xa5, 0xa7, 0xa7, 0x3a, 0x3f, 0x60, 0xbb, 0x7c, 0xf7, 0xc0,
- 0x0f, 0x03, 0x2d, 0x7a, 0x2b, 0x32, 0x81, 0xad, 0xe8, 0x29, 0x40, 0xa6,
- 0xf0, 0x40, 0x4c, 0xa7, 0x58, 0x21, 0x35, 0x7e, 0xbf, 0x54, 0xa8, 0xf7,
- 0x91, 0x31, 0xe8, 0x4c, 0xd2, 0x9c, 0x0c, 0xc8, 0xd6, 0x49, 0xfb, 0xd5,
- 0xd7, 0x09, 0x60, 0x34, 0x3d, 0x0d, 0xdc, 0xa9, 0xdf, 0xf3, 0x1b, 0x91,
- 0x3f, 0x0e, 0x1f, 0x10, 0xaf, 0x19, 0xd2, 0xd5, 0xd2, 0x3c, 0x72, 0x80,
- 0x95, 0x02, 0x17, 0x38, 0x98, 0xe4, 0xdc, 0xe2, 0x61, 0xcc, 0x0d, 0x83,
- 0x8f, 0x7b, 0xbf, 0x04, 0xf4, 0x46, 0xe8, 0xd5, 0x2e, 0x30, 0x4e, 0x20,
- 0x46, 0x0a, 0x99, 0x1a, 0x81, 0x26, 0x66, 0xfa, 0x39, 0x3e, 0x87, 0xef,
- 0x50, 0x4e, 0xc2, 0x0c, 0x0c, 0xd9, 0x4f, 0x3f, 0xe1, 0x6b, 0x8f, 0x21,
- 0x9e, 0xc7, 0x27, 0x86, 0xaf, 0xe7, 0xfc, 0x0e, 0x19, 0xea, 0xcc, 0x19,
- 0x9a, 0x07, 0xcb, 0x77, 0x26, 0x60, 0xe7, 0x29, 0xf5, 0x7b, 0xa4, 0x75,
- 0x8c, 0xce, 0x7a, 0xfd, 0xb5, 0x5e, 0x03, 0x8c, 0xcf, 0x57, 0x5f, 0x69,
- 0x66, 0x3f, 0xe4, 0x02, 0x15, 0xc5, 0x3c, 0xdb, 0x90, 0x38, 0xc4, 0x80,
- 0x64, 0x79, 0x19, 0xf3, 0x84, 0xd3, 0xc3, 0xc1, 0x8c, 0xde, 0x13, 0x52,
- 0x88, 0x4d, 0x27, 0xb6, 0xcd, 0xf5, 0xd6, 0x08, 0xb3, 0x79, 0xdc, 0x69,
- 0x20, 0x20, 0xdb, 0xe5, 0xfe, 0xac, 0xe1, 0x4f, 0x7a, 0xc2, 0xa9, 0xaa,
- 0x7e, 0x59, 0xf2, 0xe9, 0xed, 0xa3, 0x7c, 0xe9, 0xae, 0x0c, 0x92, 0x22,
- 0x05, 0x85, 0x73, 0xbe, 0x23, 0xb9, 0xbb, 0x36, 0x8a, 0xcb, 0x04, 0x03,
- 0x69, 0x80, 0x94, 0x33, 0xf6, 0x9a, 0xaf, 0xac, 0x3e, 0xe8, 0x11, 0x87,
- 0xc5, 0x86, 0xf7, 0x6a, 0xc1, 0xb3, 0x66, 0x7b, 0x01, 0x26, 0x09, 0xae,
- 0x7b, 0x8e, 0x6b, 0xb3, 0x5c, 0x54, 0x21, 0xa3, 0xa3, 0x9c, 0xc2, 0x61,
- 0x99, 0x89, 0x87, 0x32, 0x2f, 0x2c, 0xe3, 0xfc, 0x49, 0x4c, 0xd0, 0x91,
- 0xe6, 0xdb, 0x35, 0xbe, 0xc1, 0xe0, 0xac, 0xd9, 0xcd, 0xd4, 0xaf, 0xcf,
- 0x9b, 0x57, 0x3d, 0x93, 0x66, 0x9e, 0xd8, 0x89, 0x16, 0xb7, 0xec, 0xf4,
- 0xdc, 0x64, 0xbe, 0x2d, 0xc2, 0x40, 0x84, 0xf3, 0x0c, 0x17, 0x8a, 0xa8,
- 0x36, 0x5e, 0x39, 0x54, 0x9b, 0x34, 0xd9, 0x6a, 0x4c, 0xf1, 0xcf, 0x1e,
- 0x7c, 0x32, 0xd6, 0x6f, 0x4f, 0xe9, 0xdf, 0x3e, 0x89, 0x97, 0x1e, 0xe6,
- 0xd4, 0x51, 0x20, 0xff, 0x45, 0x61, 0xc6, 0x6e, 0x48, 0x4d, 0x4e, 0xe6,
- 0x43, 0x93, 0xc4, 0xab, 0x9c, 0xf8, 0xa5, 0x75, 0xf0, 0xb1, 0xf1, 0x10,
- 0xdd, 0xda, 0x6b, 0x1d, 0x6e, 0x7d, 0x5f, 0x93, 0x5f, 0x6c, 0x7a, 0x2a,
- 0xf1, 0x9a, 0xa6, 0xdb, 0xe4, 0xe5, 0xa7, 0xe6, 0x7b, 0x7c, 0x14, 0x6e,
- 0x98, 0x70, 0xfb, 0x75, 0x98, 0x6d, 0x3d, 0xd4, 0x5a, 0x03, 0x97, 0xb8,
- 0x97, 0x07, 0x4f, 0x40, 0x19, 0xd3, 0x7f, 0x73, 0x79, 0x90, 0x45, 0x5a,
- 0x4a, 0x78, 0x6c, 0x1e, 0x7a, 0x8f, 0xe9, 0x9f, 0x8f, 0x9b, 0xff, 0x02,
- 0x61, 0xd2, 0xcf, 0xff, 0x21, 0x3b, 0x17, 0xe8, 0x24, 0x3e, 0x2c, 0xf5,
- 0xec, 0x9d, 0x45, 0xe0, 0x21, 0x26, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff,
- 0xc9, 0x2e, 0x07, 0x65, 0xc7, 0x19, 0x00, 0x00,
- },
- "conf/app.ini",
- )
-}
-
-func conf_content_git_bare_zip() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0xac, 0x7a,
- 0x05, 0x54, 0x94, 0x5d, 0xd7, 0xf6, 0xd0, 0x48, 0x77, 0xc7, 0xd0, 0xdd,
- 0x29, 0x48, 0x89, 0x74, 0x77, 0x77, 0xf7, 0x00, 0x33, 0xc4, 0x10, 0x82,
- 0xa4, 0xe0, 0x48, 0x0e, 0x12, 0xd2, 0x21, 0xdd, 0x20, 0x22, 0x8d, 0x80,
- 0x80, 0x34, 0x4a, 0x87, 0x84, 0xa8, 0xa4, 0x80, 0xa0, 0xe4, 0x8f, 0xbf,
- 0x8f, 0xef, 0x07, 0xfe, 0x8f, 0xcf, 0xf7, 0xae, 0xf7, 0xfd, 0xc7, 0xb5,
- 0xd7, 0x5e, 0x67, 0xad, 0x7d, 0x5f, 0xd7, 0x76, 0xdf, 0xe7, 0x9c, 0x7d,
- 0xee, 0x73, 0xa1, 0xa9, 0x82, 0x84, 0x4c, 0x04, 0x00, 0x00, 0xd0, 0x01,
- 0xc9, 0xba, 0x9e, 0xf7, 0x90, 0x6a, 0x72, 0xdd, 0x6d, 0xaf, 0x46, 0x61,
- 0x57, 0x86, 0x7a, 0x65, 0x36, 0x1e, 0xee, 0xf6, 0x4e, 0x0e, 0x72, 0x8f,
- 0xf8, 0x70, 0x42, 0x80, 0x58, 0x00, 0x07, 0xbf, 0x08, 0x8d, 0x3d, 0x24,
- 0x77, 0x79, 0x05, 0x5a, 0x4b, 0x2a, 0xcd, 0x18, 0x61, 0x44, 0x21, 0x37,
- 0xa1, 0xf7, 0xc7, 0x2b, 0x6b, 0x7e, 0x2f, 0x06, 0x87, 0x28, 0xf9, 0x38,
- 0xdf, 0xf1, 0x9a, 0x32, 0x16, 0xbf, 0x62, 0xc2, 0x63, 0x79, 0x86, 0x5b,
- 0x0d, 0x5c, 0x2f, 0x72, 0x31, 0x76, 0x41, 0x94, 0x57, 0x5c, 0xcb, 0xd5,
- 0x06, 0x69, 0x75, 0xa4, 0xbf, 0xfd, 0xa2, 0x30, 0xe0, 0x8b, 0xc2, 0xc6,
- 0x66, 0x2d, 0xb9, 0x3e, 0xd5, 0xb4, 0xd1, 0xbc, 0xf0, 0xf4, 0x6c, 0x2c,
- 0x94, 0x06, 0x3a, 0x9e, 0x5b, 0xd9, 0x36, 0x9a, 0xf4, 0xb8, 0x58, 0xe7,
- 0x71, 0x4f, 0xdb, 0xcd, 0x3c, 0x44, 0x62, 0xd1, 0x68, 0xa5, 0xae, 0x46,
- 0x4a, 0x57, 0x86, 0x79, 0x65, 0xb6, 0x76, 0xde, 0x36, 0x5e, 0x4e, 0x20,
- 0xb0, 0x93, 0x87, 0x3b, 0xe6, 0xd0, 0xa0, 0xca, 0x1b, 0x35, 0x35, 0x2d,
- 0x56, 0x65, 0xae, 0xd7, 0x3c, 0xc3, 0x9c, 0xfd, 0x3c, 0xa5, 0xf5, 0xfa,
- 0x8a, 0x6a, 0xfd, 0x9c, 0x5a, 0xac, 0xfd, 0xaf, 0x39, 0xf5, 0x15, 0x07,
- 0xdf, 0x28, 0xe9, 0x69, 0x6a, 0x28, 0x71, 0xa9, 0x73, 0x0f, 0x70, 0xb2,
- 0xf6, 0xbf, 0x19, 0xd1, 0x31, 0x60, 0xed, 0x37, 0x00, 0x7c, 0x02, 0x0c,
- 0x3c, 0xa3, 0x77, 0x1a, 0x5f, 0x45, 0x04, 0xdc, 0xe4, 0xe1, 0x70, 0xf2,
- 0x7e, 0x46, 0x7e, 0x35, 0x22, 0xbd, 0x32, 0xe4, 0x2b, 0x53, 0x94, 0x93,
- 0xb9, 0xc7, 0xa1, 0xac, 0x56, 0xa7, 0xcd, 0xaa, 0xac, 0xc6, 0xf1, 0x6e,
- 0x44, 0x51, 0x4d, 0x95, 0xed, 0xdd, 0x88, 0x1a, 0x27, 0xb7, 0x12, 0xd7,
- 0xca, 0xcf, 0x47, 0x31, 0x00, 0x3f, 0x7e, 0x3f, 0x1e, 0x05, 0x5c, 0xfb,
- 0xfd, 0x28, 0x95, 0xa3, 0x87, 0x87, 0x8b, 0x37, 0xcf, 0x4d, 0x78, 0xcb,
- 0xe3, 0x04, 0x43, 0x0c, 0x04, 0x00, 0xe0, 0xd5, 0x95, 0x51, 0xfe, 0x2b,
- 0xc6, 0x0a, 0x04, 0x72, 0xf5, 0x07, 0x59, 0x81, 0x6d, 0x1c, 0xb9, 0xdc,
- 0xbc, 0x1d, 0xb8, 0xbd, 0xad, 0xdc, 0x40, 0xae, 0x76, 0x41, 0xf1, 0x12,
- 0x1a, 0xdd, 0xd2, 0x58, 0x91, 0x0e, 0x3b, 0x06, 0xa9, 0xf5, 0x9f, 0x11,
- 0x95, 0x5e, 0x0d, 0xe8, 0x32, 0x32, 0x4e, 0x12, 0x43, 0x14, 0xa6, 0x26,
- 0xfb, 0x8d, 0x5e, 0xf0, 0x64, 0x52, 0x37, 0xa0, 0x7c, 0x59, 0x7a, 0xe1,
- 0x72, 0x6b, 0xfb, 0x95, 0x73, 0x6b, 0x70, 0xd6, 0x94, 0xf9, 0xfc, 0x73,
- 0xf1, 0x7d, 0x2e, 0xca, 0x06, 0x4d, 0x4c, 0xbf, 0x2f, 0x21, 0x0a, 0xdb,
- 0x79, 0x72, 0xbc, 0x74, 0x8f, 0x3a, 0xcc, 0xf2, 0x58, 0x81, 0x08, 0x62,
- 0x61, 0x0b, 0xe8, 0xd6, 0x78, 0xcd, 0xcb, 0x54, 0xb7, 0xa6, 0x79, 0x43,
- 0x64, 0xed, 0x25, 0x80, 0xd1, 0x34, 0x63, 0xdd, 0x3b, 0xc9, 0xb7, 0xc4,
- 0xe4, 0x03, 0x62, 0x8c, 0xc5, 0x90, 0x82, 0x30, 0x70, 0xc0, 0xcc, 0xef,
- 0xd4, 0x93, 0x32, 0xbb, 0x87, 0x8c, 0xea, 0x85, 0xea, 0x3a, 0xc3, 0xfb,
- 0x77, 0xea, 0x84, 0x18, 0x70, 0x19, 0x51, 0x03, 0xf7, 0xbe, 0xb2, 0x14,
- 0x01, 0x38, 0x8d, 0x99, 0x51, 0x17, 0x30, 0x99, 0x81, 0x1f, 0x1e, 0x9e,
- 0xc5, 0x7b, 0x92, 0x2a, 0x60, 0xf0, 0x25, 0x90, 0x9c, 0x95, 0x49, 0x4b,
- 0x10, 0x3d, 0x38, 0xea, 0x2a, 0xe4, 0x56, 0x89, 0x16, 0x71, 0xa3, 0x6c,
- 0xa2, 0x78, 0x88, 0xd9, 0x35, 0x0b, 0xea, 0x08, 0x7a, 0xb8, 0x22, 0xc9,
- 0xb3, 0x48, 0x25, 0x4c, 0x18, 0x50, 0xeb, 0x3d, 0x43, 0xb5, 0x0f, 0x7d,
- 0x92, 0x4d, 0x1f, 0xf9, 0x4d, 0xd5, 0x3f, 0x3c, 0x59, 0x61, 0xc7, 0x57,
- 0x3b, 0x0f, 0x45, 0xcf, 0xac, 0xaa, 0x8a, 0x1a, 0x57, 0x2f, 0x5f, 0x17,
- 0x09, 0x49, 0x69, 0xa8, 0xc8, 0x3e, 0x99, 0x8d, 0x5d, 0x86, 0xa4, 0x38,
- 0x4e, 0x93, 0x6b, 0x49, 0x78, 0x2e, 0x6e, 0x6a, 0x28, 0xc0, 0xc4, 0x71,
- 0xde, 0x7c, 0x7e, 0x83, 0xc9, 0xb0, 0x62, 0x92, 0x9a, 0xa6, 0xe6, 0x54,
- 0xa4, 0xfe, 0x0c, 0x0a, 0x2d, 0x4e, 0xd9, 0xfc, 0x6c, 0x22, 0x51, 0x46,
- 0x7b, 0xb3, 0x84, 0x9f, 0xbe, 0x0d, 0xe0, 0x1d, 0x5f, 0x95, 0x2f, 0x04,
- 0xe9, 0xe7, 0x5b, 0xfa, 0x59, 0x42, 0x1b, 0x0f, 0x37, 0x37, 0x27, 0xf0,
- 0xf5, 0xf2, 0x25, 0x5a, 0x78, 0x4c, 0xf0, 0x12, 0xf5, 0x64, 0x67, 0x68,
- 0x78, 0x2a, 0x72, 0x8c, 0xeb, 0xab, 0xe5, 0xef, 0x47, 0xd7, 0x2b, 0x87,
- 0xd1, 0x4f, 0x63, 0x26, 0x19, 0x1e, 0xdf, 0xfb, 0xb4, 0xc6, 0x2c, 0xf2,
- 0xb0, 0xe1, 0xd5, 0xb0, 0x6b, 0xd4, 0x97, 0x67, 0x81, 0xbe, 0x95, 0xd4,
- 0xa5, 0xc4, 0xcc, 0x5f, 0x08, 0xe4, 0xa6, 0x8e, 0x2f, 0x86, 0x25, 0xfa,
- 0x68, 0xda, 0x5f, 0xe3, 0x68, 0xdb, 0x35, 0x3e, 0xee, 0x1d, 0x23, 0x7b,
- 0x82, 0x71, 0xa8, 0x56, 0x6f, 0x26, 0x5b, 0xdc, 0xd0, 0x16, 0x35, 0x04,
- 0xdb, 0xa2, 0x7a, 0x2a, 0x6f, 0xae, 0x13, 0x8c, 0x6b, 0x40, 0xe8, 0xb5,
- 0xd0, 0x38, 0x9e, 0x3b, 0x46, 0x6c, 0x5c, 0xab, 0xaf, 0x5b, 0xbf, 0xd6,
- 0xff, 0x3c, 0xcf, 0xa9, 0xb8, 0xe3, 0xbd, 0xf8, 0x4a, 0x8c, 0x46, 0x54,
- 0x11, 0x59, 0xdc, 0xf8, 0xdb, 0xd1, 0x18, 0xa0, 0xea, 0xdb, 0xe7, 0x05,
- 0xf3, 0xf4, 0xbc, 0xc9, 0x8e, 0xb7, 0x9a, 0xb1, 0x2e, 0x0b, 0x5d, 0xa3,
- 0x11, 0x2a, 0x49, 0x70, 0x1a, 0xaa, 0x37, 0x28, 0x58, 0x24, 0xab, 0x2b,
- 0x34, 0x28, 0xdf, 0x36, 0x7b, 0x60, 0x2c, 0x26, 0xc6, 0x21, 0x99, 0x3a,
- 0xc1, 0x2f, 0x80, 0xf9, 0xe4, 0x56, 0x99, 0xa0, 0xd6, 0x08, 0x56, 0x6a,
- 0x72, 0x45, 0x97, 0x80, 0x12, 0x76, 0x74, 0x94, 0x31, 0x88, 0xbc, 0xaf,
- 0x3c, 0x86, 0x02, 0x0b, 0xa3, 0xed, 0x2d, 0x0d, 0xbc, 0x01, 0x23, 0x8f,
- 0x11, 0xb1, 0x05, 0x7f, 0xbb, 0x22, 0xac, 0xd9, 0x8d, 0xf4, 0xc4, 0x34,
- 0xb5, 0x7c, 0xda, 0x19, 0xda, 0xe7, 0xda, 0x9d, 0x61, 0x23, 0x4f, 0xb0,
- 0x24, 0x53, 0xe8, 0x7a, 0xb8, 0x44, 0xd8, 0x3c, 0x97, 0xf1, 0xcc, 0x86,
- 0xea, 0xb2, 0x6a, 0x42, 0x72, 0x2d, 0xc5, 0x74, 0x03, 0xcb, 0x14, 0x7a,
- 0x90, 0xe8, 0xdd, 0xdc, 0x88, 0x79, 0x18, 0xb2, 0x5a, 0xf4, 0xda, 0xba,
- 0xf8, 0x50, 0x42, 0x91, 0x6a, 0x8a, 0x77, 0x09, 0xe5, 0x10, 0x42, 0x29,
- 0x8d, 0xd8, 0xd8, 0xb5, 0xcd, 0x52, 0xd8, 0xfa, 0xe6, 0x15, 0x89, 0xc9,
- 0xda, 0xbe, 0x6c, 0xd1, 0x08, 0xcf, 0x66, 0xe0, 0xb0, 0x27, 0x66, 0x4a,
- 0x91, 0x77, 0xc8, 0x10, 0xc5, 0xa3, 0xdc, 0xb2, 0xa8, 0x52, 0x4c, 0xc0,
- 0x1f, 0x42, 0x8c, 0x0a, 0x8e, 0xff, 0x8c, 0x05, 0xe9, 0xd2, 0x3c, 0xa9,
- 0xc7, 0xab, 0x53, 0xaf, 0xab, 0x10, 0x46, 0x56, 0x9f, 0xc0, 0x46, 0x00,
- 0x89, 0x76, 0x7e, 0x18, 0xfa, 0x9a, 0x11, 0xdb, 0x3f, 0xb9, 0x74, 0x64,
- 0x60, 0xb5, 0x77, 0xe1, 0x1c, 0xe0, 0xeb, 0xff, 0xf2, 0x1c, 0x74, 0xfe,
- 0x69, 0xc7, 0xf9, 0x60, 0x67, 0x95, 0x44, 0xc1, 0x70, 0x47, 0x83, 0x98,
- 0x20, 0x63, 0xdb, 0x77, 0x62, 0x3d, 0xb0, 0x35, 0x83, 0x6b, 0x23, 0x69,
- 0x8b, 0x87, 0xb2, 0xaa, 0xc6, 0xc4, 0xce, 0x8c, 0xdf, 0xc6, 0xb4, 0x87,
- 0x03, 0x18, 0x54, 0x1d, 0x7d, 0x4c, 0x28, 0xdf, 0x17, 0xcd, 0x52, 0x46,
- 0xd6, 0xc7, 0xc0, 0x5a, 0x75, 0xbb, 0x34, 0xb7, 0xd1, 0x3c, 0xaa, 0x76,
- 0xc4, 0x79, 0x53, 0x22, 0xcb, 0xdc, 0x85, 0x9b, 0xaa, 0x5d, 0x33, 0x36,
- 0x6f, 0x97, 0x22, 0xed, 0x34, 0x36, 0x38, 0x2b, 0x65, 0x3d, 0x9a, 0xda,
- 0x28, 0x4a, 0xb4, 0x17, 0xc5, 0xa6, 0x48, 0x86, 0x6f, 0xe6, 0xb2, 0x4e,
- 0x73, 0x5f, 0x41, 0x94, 0xa2, 0xd3, 0x79, 0x75, 0x5a, 0xa1, 0x6a, 0x0d,
- 0x69, 0xfc, 0x6c, 0x2d, 0x3a, 0xde, 0xf6, 0x74, 0x84, 0x2c, 0x28, 0xad,
- 0xea, 0x4c, 0x84, 0x23, 0xd1, 0x68, 0xfa, 0xc0, 0x41, 0x10, 0xa3, 0xac,
- 0xd2, 0xa2, 0xad, 0xeb, 0xc3, 0x65, 0xc0, 0xa3, 0xae, 0x53, 0x33, 0xb9,
- 0xf6, 0xbc, 0xa5, 0x9b, 0x73, 0x05, 0x35, 0xcc, 0xb5, 0x0f, 0x7a, 0x35,
- 0xca, 0xb9, 0x32, 0xb2, 0x7f, 0xcd, 0x15, 0x90, 0x87, 0x37, 0x98, 0xeb,
- 0xe7, 0x84, 0xf9, 0x6b, 0xb2, 0x70, 0x3d, 0x92, 0x21, 0xe8, 0x02, 0xe2,
- 0x21, 0xef, 0xb6, 0x58, 0x63, 0x19, 0xa8, 0xed, 0x2c, 0x9e, 0x85, 0xb0,
- 0x48, 0x55, 0xd3, 0xc5, 0x6a, 0x22, 0xaa, 0xd8, 0x29, 0xe9, 0x65, 0xf1,
- 0x3c, 0x34, 0x7f, 0xe9, 0x30, 0x6b, 0x5e, 0x74, 0x3b, 0x45, 0x29, 0xac,
- 0xa6, 0x77, 0x45, 0xab, 0x43, 0x7c, 0x3d, 0x9d, 0x4c, 0x66, 0x0d, 0x09,
- 0xe2, 0x52, 0x8e, 0xcd, 0xa5, 0x29, 0xab, 0x2b, 0xaa, 0xfc, 0x90, 0x34,
- 0xde, 0xa3, 0xe5, 0x41, 0x4e, 0x86, 0x77, 0xf9, 0xe7, 0xe7, 0x93, 0x55,
- 0xea, 0x5e, 0x8f, 0x37, 0xd8, 0x27, 0xba, 0x56, 0xd3, 0x02, 0x6e, 0x35,
- 0x8d, 0xce, 0xbb, 0x70, 0x81, 0x3d, 0x19, 0xab, 0x0c, 0xc5, 0x07, 0xee,
- 0xaf, 0xac, 0xbe, 0x47, 0x96, 0x25, 0x76, 0x7b, 0x6e, 0x61, 0x4d, 0x06,
- 0x7b, 0xb1, 0xca, 0x16, 0xa4, 0xb9, 0xf8, 0x01, 0xf3, 0x66, 0xbe, 0x41,
- 0x65, 0xdc, 0xdb, 0x7a, 0x57, 0x73, 0x9b, 0x15, 0x11, 0x00, 0x20, 0xbf,
- 0x99, 0xaf, 0x97, 0x9d, 0x8d, 0x9d, 0x93, 0x8f, 0xdd, 0x5f, 0x09, 0xdb,
- 0x69, 0x0d, 0x7a, 0x75, 0xf1, 0x62, 0xb5, 0x6c, 0x70, 0xe8, 0x36, 0x09,
- 0xa7, 0xde, 0x41, 0x57, 0x8a, 0xb2, 0x2a, 0x7a, 0x32, 0x7c, 0xb8, 0x48,
- 0xab, 0xe9, 0x9a, 0xe6, 0x07, 0xf4, 0xe9, 0xf5, 0x61, 0x3d, 0x3f, 0x65,
- 0x8f, 0x94, 0xa5, 0x15, 0x51, 0x29, 0x33, 0xf3, 0x37, 0xd8, 0x64, 0x19,
- 0xa3, 0xe4, 0xe8, 0x8a, 0xaf, 0xa8, 0x13, 0x6a, 0x31, 0xce, 0xa1, 0x7c,
- 0x3c, 0x11, 0x61, 0x09, 0xda, 0xc1, 0x92, 0x81, 0x0a, 0xc8, 0x8d, 0x0e,
- 0xcb, 0x52, 0xa1, 0xeb, 0x27, 0x61, 0xf2, 0x1d, 0x33, 0xf6, 0x9b, 0x3a,
- 0xa1, 0x80, 0x99, 0x28, 0x45, 0x1e, 0x7e, 0xfb, 0x42, 0x1b, 0x04, 0x52,
- 0x03, 0x48, 0x99, 0x48, 0x53, 0xf7, 0x77, 0x23, 0xbd, 0x61, 0x49, 0x76,
- 0x20, 0xe3, 0x05, 0x28, 0x2b, 0xe9, 0x30, 0xa2, 0xa0, 0xab, 0xc4, 0xc1,
- 0x47, 0x4b, 0xeb, 0x07, 0x09, 0x07, 0xd3, 0x3e, 0x9e, 0x19, 0x50, 0x6c,
- 0x3d, 0xe4, 0x7c, 0x93, 0x74, 0x97, 0x66, 0x11, 0xd0, 0xc2, 0xf2, 0xfe,
- 0x96, 0xac, 0x61, 0xd3, 0x85, 0x60, 0xdc, 0x19, 0x1c, 0xd0, 0xcb, 0x3f,
- 0xf5, 0xf2, 0xfb, 0x2b, 0x1f, 0xe0, 0xbd, 0x1e, 0x88, 0xf3, 0x98, 0xb5,
- 0xd5, 0x1a, 0x0d, 0xd5, 0xbc, 0x9c, 0x7f, 0x33, 0xcd, 0x7b, 0xcb, 0x4f,
- 0x07, 0x17, 0x7b, 0x05, 0x5c, 0x8f, 0xc1, 0xb6, 0xdf, 0x60, 0x30, 0x49,
- 0x44, 0x3f, 0xa3, 0x22, 0xfc, 0x4d, 0x33, 0x3d, 0x12, 0x18, 0xfb, 0x49,
- 0xcc, 0xe7, 0xc7, 0x47, 0xcd, 0x63, 0x66, 0x26, 0x53, 0x11, 0xbd, 0x66,
- 0x13, 0x6f, 0x61, 0xda, 0xda, 0x42, 0x86, 0xee, 0xb9, 0x4e, 0x5f, 0x69,
- 0x02, 0xcc, 0x08, 0x57, 0xed, 0x66, 0xdc, 0x8f, 0xdd, 0xe6, 0x3e, 0x99,
- 0xcd, 0x0c, 0xba, 0x99, 0x25, 0xe8, 0xea, 0x8d, 0xed, 0x8a, 0x2f, 0x90,
- 0x08, 0xcd, 0x8d, 0xcb, 0x60, 0x85, 0xb3, 0x47, 0xe3, 0x23, 0x39, 0x24,
- 0xae, 0x60, 0xde, 0x03, 0x66, 0xc2, 0x16, 0x0f, 0xad, 0x6f, 0x49, 0x46,
- 0x27, 0xdf, 0xbe, 0xab, 0x78, 0xdf, 0x1f, 0x95, 0xdb, 0x9e, 0x63, 0xa1,
- 0x69, 0x5a, 0x35, 0x98, 0x73, 0x81, 0xde, 0xf4, 0x51, 0x21, 0x13, 0xaf,
- 0xfe, 0x5e, 0xbd, 0x5f, 0x93, 0x89, 0x50, 0x60, 0xdb, 0xc7, 0x8b, 0x79,
- 0x9b, 0x24, 0xbb, 0x4d, 0xec, 0xe8, 0xdb, 0x7e, 0x92, 0xc2, 0x50, 0x82,
- 0x01, 0x25, 0x4f, 0x7e, 0xbe, 0x27, 0x8f, 0x63, 0x97, 0x06, 0xef, 0x13,
- 0x78, 0x53, 0x8c, 0x99, 0xd6, 0x7a, 0xdc, 0x7c, 0x17, 0xe9, 0x58, 0xc7,
- 0x1d, 0x31, 0x57, 0xa3, 0xd6, 0xff, 0x77, 0xee, 0x40, 0x40, 0xb6, 0x56,
- 0xe0, 0x5f, 0xaf, 0x82, 0x6b, 0x48, 0x8b, 0xe0, 0x01, 0x2f, 0x16, 0xf2,
- 0xe8, 0x65, 0x96, 0x75, 0x84, 0x45, 0xa8, 0x80, 0x1f, 0x1a, 0x0f, 0x1e,
- 0x10, 0x8e, 0x33, 0x0e, 0x4e, 0x5c, 0x5e, 0xde, 0xae, 0xf8, 0xb8, 0xb1,
- 0x33, 0xdc, 0xe2, 0xc6, 0xd3, 0x9d, 0xba, 0x6f, 0xa9, 0xe2, 0x28, 0x1b,
- 0x6b, 0x82, 0x4a, 0x5b, 0x0f, 0x67, 0xb1, 0xc1, 0x37, 0xb2, 0x4a, 0x2a,
- 0x5a, 0x01, 0xc9, 0x68, 0x71, 0x17, 0x60, 0xdd, 0xcd, 0x75, 0x5a, 0x27,
- 0x17, 0x8a, 0x65, 0x22, 0x0d, 0x62, 0x88, 0xb1, 0x16, 0x89, 0x6c, 0x31,
- 0xe4, 0xe0, 0xdf, 0x9d, 0x43, 0x37, 0x18, 0xd0, 0xbf, 0xb7, 0x70, 0xa2,
- 0xd3, 0x86, 0x29, 0x3a, 0x61, 0x68, 0x65, 0x91, 0x98, 0x79, 0xd2, 0x40,
- 0x91, 0xd6, 0x78, 0x9f, 0x70, 0xc2, 0x97, 0x50, 0x10, 0xfe, 0xd5, 0x9d,
- 0x47, 0xe0, 0xb6, 0x48, 0x10, 0x7a, 0xe0, 0x5e, 0xb8, 0x82, 0xd7, 0x59,
- 0xe9, 0xb0, 0xe1, 0xa6, 0xda, 0x13, 0xaf, 0xe4, 0x3d, 0x84, 0x9b, 0xf9,
- 0x53, 0x31, 0x99, 0xdc, 0x3e, 0xbf, 0x1a, 0x3d, 0xbe, 0xd1, 0x6a, 0x40,
- 0x5e, 0x76, 0x5c, 0xff, 0xd3, 0x6e, 0x7e, 0xed, 0x95, 0x71, 0x7c, 0x1a,
- 0xdd, 0xbc, 0x78, 0x11, 0x0e, 0x67, 0x1c, 0x34, 0x4e, 0x6f, 0x51, 0xc6,
- 0xa3, 0xe1, 0xb7, 0x7e, 0xb6, 0x1a, 0x75, 0x68, 0x89, 0x06, 0x2c, 0x28,
- 0x25, 0x28, 0x97, 0x2d, 0xfa, 0xf2, 0xb1, 0x8e, 0x71, 0x4d, 0x4d, 0xdb,
- 0xcb, 0xd3, 0xb6, 0x80, 0xd8, 0xb9, 0xa2, 0xf5, 0x51, 0x5b, 0x07, 0x12,
- 0xfb, 0xd0, 0x0d, 0x40, 0x7a, 0x79, 0x1c, 0x52, 0xe7, 0x43, 0xaa, 0xf8,
- 0x97, 0xaf, 0xb4, 0x72, 0x1f, 0xe0, 0x2a, 0xcf, 0x67, 0x83, 0xc0, 0xfa,
- 0x9d, 0xe4, 0x8d, 0xf0, 0x2f, 0x4f, 0x9f, 0x87, 0xab, 0xb7, 0x38, 0xe8,
- 0xcd, 0x12, 0x4b, 0x07, 0x3c, 0x80, 0x79, 0x8a, 0xca, 0x95, 0x65, 0xca,
- 0x66, 0xbf, 0xea, 0x26, 0xb1, 0xdf, 0xe6, 0xc2, 0xdd, 0x4b, 0xae, 0x5b,
- 0x98, 0x38, 0x29, 0x9f, 0x6d, 0x2e, 0xeb, 0xee, 0x17, 0xdd, 0x8a, 0x79,
- 0x42, 0xac, 0xa0, 0x1f, 0x05, 0xcc, 0xbd, 0x28, 0x60, 0x7c, 0xed, 0x0c,
- 0xe1, 0xac, 0x34, 0x67, 0x23, 0x76, 0xa2, 0xb9, 0xbd, 0x85, 0x59, 0x49,
- 0x45, 0xaa, 0x90, 0x98, 0x3a, 0xcd, 0x6e, 0x56, 0xb2, 0x4c, 0x23, 0xd0,
- 0x89, 0x3a, 0x74, 0x60, 0x63, 0xc4, 0x74, 0x77, 0xe1, 0x6b, 0x6b, 0xac,
- 0xae, 0x74, 0x67, 0x63, 0x61, 0x56, 0xf3, 0xb8, 0xf5, 0xd1, 0x12, 0x03,
- 0xfc, 0xb5, 0x45, 0x62, 0xd6, 0x46, 0x5a, 0x4e, 0xcc, 0xc3, 0xcf, 0xed,
- 0xcc, 0x6f, 0x67, 0x53, 0x85, 0x8e, 0xca, 0x21, 0x3e, 0x10, 0x66, 0xea,
- 0x7c, 0xad, 0x81, 0x18, 0xe8, 0xdd, 0x86, 0xc0, 0x05, 0xd7, 0x25, 0x0b,
- 0x61, 0x8f, 0x21, 0xd5, 0xc1, 0xa1, 0xc0, 0x6f, 0x65, 0xe5, 0xd5, 0xc6,
- 0x69, 0x94, 0xe9, 0xc5, 0xa7, 0xbe, 0x4e, 0xdf, 0xbf, 0x82, 0x0c, 0xb8,
- 0xb2, 0x4b, 0x3d, 0x0e, 0x1c, 0x83, 0x7f, 0xeb, 0xff, 0xdb, 0xb4, 0xa0,
- 0x99, 0xac, 0xab, 0xce, 0x52, 0x8c, 0x7a, 0xbd, 0xbb, 0xfc, 0xa8, 0xda,
- 0x8d, 0x0d, 0x23, 0x48, 0xd7, 0xcc, 0x63, 0x4e, 0x1e, 0x2f, 0x50, 0xf8,
- 0x7e, 0x8f, 0xbc, 0xf0, 0x16, 0x19, 0x1e, 0x9b, 0x91, 0x26, 0xd6, 0x5c,
- 0x04, 0x36, 0xba, 0x7b, 0x08, 0x32, 0xef, 0x49, 0x3c, 0xc5, 0x47, 0x59,
- 0x0a, 0x22, 0x85, 0xc5, 0x2c, 0x3f, 0x21, 0xff, 0xbe, 0x79, 0x6a, 0x26,
- 0x0e, 0xf4, 0x93, 0x39, 0x01, 0xdf, 0x02, 0x5b, 0x51, 0xae, 0x93, 0xde,
- 0xb8, 0xf3, 0xd4, 0x99, 0xcc, 0x99, 0x55, 0x91, 0x3a, 0xed, 0x8c, 0xb4,
- 0xaa, 0xba, 0xd5, 0xad, 0x54, 0xfd, 0xc8, 0x6f, 0x46, 0xf5, 0x66, 0xdd,
- 0xba, 0x26, 0xa7, 0xf7, 0xda, 0xbc, 0x9a, 0x31, 0x89, 0x38, 0xdd, 0xa6,
- 0x9d, 0x1a, 0xf2, 0xdd, 0xb8, 0x10, 0x9d, 0x34, 0xf2, 0xea, 0x83, 0x4e,
- 0xcc, 0xf9, 0xf5, 0x1a, 0xdd, 0x20, 0xe8, 0x9c, 0x98, 0xba, 0x4d, 0xa4,
- 0x6a, 0xdd, 0x89, 0x03, 0xd4, 0x6a, 0xef, 0xc4, 0x1e, 0x5d, 0x32, 0xd7,
- 0xbf, 0xcd, 0x65, 0xb6, 0x51, 0x6a, 0x82, 0x2c, 0xd5, 0xde, 0x6a, 0x03,
- 0x42, 0xcb, 0x8f, 0xcd, 0x9c, 0xe7, 0x44, 0x08, 0xfa, 0xcf, 0x1e, 0x25,
- 0xf3, 0x4d, 0xae, 0x2d, 0x4d, 0x1b, 0xed, 0xcb, 0x84, 0xd3, 0x9c, 0xeb,
- 0x5a, 0x46, 0xf5, 0xb6, 0x4d, 0xd9, 0xab, 0x75, 0xc5, 0x7f, 0x14, 0x73,
- 0x10, 0x7f, 0x26, 0x67, 0xe9, 0x3c, 0x13, 0x50, 0x63, 0x3f, 0x8e, 0x21,
- 0x64, 0x8d, 0x12, 0x8a, 0x8a, 0xff, 0x14, 0xb7, 0x31, 0x5f, 0x73, 0x97,
- 0x8e, 0xe4, 0xe1, 0x6a, 0x3e, 0x93, 0x70, 0x1e, 0x72, 0x8f, 0x66, 0x98,
- 0xd2, 0x3d, 0x5e, 0xa6, 0x28, 0x8d, 0xed, 0x6f, 0x72, 0x9f, 0xbe, 0x8d,
- 0x8c, 0x17, 0x78, 0x3f, 0x8d, 0x43, 0x8e, 0xe1, 0x9c, 0x88, 0xa1, 0x67,
- 0xe8, 0xcb, 0x68, 0x21, 0x1c, 0x16, 0x58, 0xff, 0x2e, 0x9a, 0x8c, 0xbb,
- 0x6b, 0xd0, 0x3e, 0xbe, 0xa0, 0xba, 0x6f, 0x6f, 0x7f, 0x52, 0x94, 0xdb,
- 0xb3, 0xf0, 0x49, 0x2e, 0xb2, 0x91, 0x59, 0x9c, 0xc0, 0x25, 0x17, 0x86,
- 0xfb, 0x9c, 0x8f, 0x71, 0xb5, 0xd7, 0xdb, 0x07, 0xac, 0x4a, 0x0b, 0xc3,
- 0x31, 0x16, 0x64, 0x28, 0xa5, 0x4c, 0x34, 0x66, 0xa3, 0x60, 0x60, 0x10,
- 0x71, 0x7f, 0x59, 0x9d, 0xbf, 0x9c, 0xda, 0x9f, 0x72, 0xdf, 0x9b, 0xd8,
- 0xfc, 0x33, 0xe7, 0x60, 0x59, 0x8f, 0xb8, 0x91, 0x19, 0x37, 0xa9, 0x9e,
- 0x7f, 0xff, 0x7a, 0x43, 0xaa, 0xc5, 0xf0, 0xf7, 0x85, 0x5a, 0x5d, 0x83,
- 0xfd, 0x7d, 0xa8, 0x27, 0xa4, 0x50, 0xf9, 0xc3, 0xfa, 0xd7, 0xc0, 0x34,
- 0xb6, 0xcc, 0xd0, 0x4d, 0x05, 0x39, 0xf1, 0xb9, 0x67, 0xa1, 0xf7, 0xe4,
- 0xa7, 0x61, 0x0b, 0x45, 0x33, 0x18, 0x16, 0x4e, 0x99, 0xa9, 0xf2, 0x8b,
- 0x59, 0x77, 0xa2, 0x42, 0xcf, 0xe4, 0x2d, 0x8b, 0xd6, 0x79, 0x43, 0x96,
- 0xa1, 0xdc, 0xb5, 0xc9, 0xe1, 0x4f, 0x93, 0xbd, 0x02, 0xf6, 0x7d, 0x0c,
- 0xcb, 0xb4, 0xa0, 0x99, 0xf6, 0x1b, 0xb1, 0x06, 0x08, 0x1b, 0x35, 0xdb,
- 0x2c, 0x29, 0xb3, 0x08, 0x22, 0x32, 0x8c, 0x0b, 0x39, 0x84, 0xb4, 0x8c,
- 0xe2, 0x06, 0xb6, 0x67, 0x6f, 0x88, 0xcd, 0xe6, 0x33, 0xb9, 0xad, 0xe7,
- 0x5b, 0xeb, 0x16, 0x75, 0xa6, 0xa2, 0x73, 0xca, 0x5d, 0x6e, 0x51, 0xc2,
- 0x5c, 0x6b, 0xc4, 0x84, 0xf9, 0xdf, 0x2f, 0x18, 0x72, 0x5d, 0x62, 0xee,
- 0xf2, 0x44, 0xaf, 0x63, 0x83, 0xc3, 0xe9, 0xc9, 0xc0, 0x2a, 0x03, 0x33,
- 0x24, 0xc6, 0xaa, 0x2b, 0xf1, 0x89, 0x3a, 0x3e, 0xa6, 0x2d, 0xab, 0xc3,
- 0x50, 0xea, 0xf2, 0x39, 0xe2, 0x43, 0x34, 0x59, 0x4b, 0x33, 0x1b, 0x88,
- 0x62, 0x7b, 0x72, 0xf1, 0x4a, 0x98, 0xa2, 0x47, 0x31, 0x12, 0x5f, 0x5a,
- 0x7c, 0xb1, 0xb8, 0x55, 0x0e, 0x33, 0xeb, 0x08, 0xc2, 0xe0, 0x5e, 0x76,
- 0x20, 0x0b, 0xfb, 0xc7, 0x62, 0x12, 0x1c, 0xa7, 0xf8, 0x3c, 0xc0, 0xdd,
- 0x9c, 0xc3, 0x30, 0xd3, 0x30, 0x77, 0x46, 0x79, 0x94, 0x87, 0x81, 0x45,
- 0xfd, 0xfd, 0x65, 0xa1, 0xaa, 0x1f, 0x87, 0xb8, 0xd4, 0x56, 0x58, 0x59,
- 0x0e, 0x23, 0xd4, 0x35, 0xf2, 0x01, 0xc1, 0x75, 0xa1, 0xb8, 0x15, 0x25,
- 0x51, 0x29, 0xe5, 0x79, 0x04, 0xf0, 0x6c, 0x51, 0x1f, 0x70, 0xa3, 0x02,
- 0x24, 0xf4, 0x7b, 0x9c, 0x66, 0x35, 0xe9, 0x74, 0x81, 0x7d, 0x9f, 0x0e,
- 0xb4, 0xac, 0x3b, 0x2d, 0x4e, 0x8e, 0xfe, 0xfe, 0xde, 0xe9, 0xac, 0xcd,
- 0xa4, 0x97, 0x72, 0x2a, 0x10, 0xf2, 0x2e, 0x34, 0xd4, 0x1d, 0x9c, 0x1c,
- 0x57, 0xb8, 0xe4, 0x16, 0xe6, 0x06, 0x6d, 0x4e, 0xcd, 0xf6, 0x4f, 0xff,
- 0xba, 0xc8, 0x54, 0x86, 0xe6, 0x2b, 0xc9, 0x54, 0xa5, 0x06, 0xaf, 0x4f,
- 0x6d, 0x0a, 0xda, 0x8e, 0x58, 0x95, 0x00, 0xf8, 0x89, 0x48, 0xe3, 0x0b,
- 0x51, 0x45, 0xa2, 0xb2, 0xe6, 0x77, 0x44, 0xd5, 0x2b, 0xe5, 0x26, 0xb6,
- 0x9a, 0x53, 0xa6, 0xaa, 0xe3, 0x8c, 0xc6, 0x6c, 0xa1, 0x77, 0x86, 0xa2,
- 0x1a, 0x31, 0xd2, 0x6d, 0xf8, 0x33, 0x95, 0x52, 0x20, 0xf8, 0xd3, 0xf8,
- 0xc2, 0x4d, 0x26, 0xb6, 0xf6, 0xa8, 0x2e, 0xd7, 0x0d, 0x81, 0x91, 0xbe,
- 0x2f, 0xf3, 0xce, 0x28, 0x33, 0xb7, 0x88, 0x2f, 0x25, 0xc4, 0xe9, 0xa1,
- 0x4d, 0x97, 0x2e, 0x5f, 0xf7, 0x40, 0x01, 0xb4, 0x4a, 0x1b, 0x89, 0xc3,
- 0x92, 0x3a, 0x17, 0x23, 0x4f, 0xa4, 0x36, 0x1c, 0x0e, 0x33, 0x1b, 0x89,
- 0xd7, 0xdf, 0xfa, 0x53, 0xad, 0x06, 0x82, 0x89, 0x0d, 0x84, 0xb6, 0xbe,
- 0x2f, 0xde, 0xde, 0x74, 0x77, 0x8c, 0x98, 0x98, 0xc0, 0x51, 0xc0, 0x28,
- 0xeb, 0x9b, 0x36, 0xdf, 0x8c, 0xa0, 0x8f, 0xb6, 0xe6, 0x67, 0xdc, 0xd6,
- 0xa1, 0xcd, 0x9f, 0xe4, 0x30, 0xac, 0x20, 0xf0, 0x3c, 0xc1, 0xa3, 0x39,
- 0x5a, 0x84, 0x9a, 0xc6, 0x1b, 0x04, 0xcf, 0x18, 0x1f, 0x0b, 0xce, 0x6c,
- 0x14, 0xc8, 0xf9, 0xba, 0xae, 0x7a, 0xd6, 0x47, 0x72, 0xe6, 0x34, 0x85,
- 0xf9, 0x9c, 0xb7, 0x8b, 0x15, 0x4c, 0x88, 0x72, 0x22, 0xdf, 0x82, 0x36,
- 0xa5, 0x7b, 0xe5, 0x9f, 0x2f, 0x9a, 0x45, 0x25, 0x75, 0x23, 0x0d, 0xe7,
- 0x7d, 0x7b, 0xd1, 0xfb, 0x71, 0x91, 0x05, 0x69, 0xa2, 0xa8, 0x9b, 0x72,
- 0x69, 0xa5, 0xa8, 0x00, 0x76, 0x37, 0xce, 0x23, 0x21, 0x6c, 0x7e, 0x0a,
- 0xb9, 0x04, 0xc9, 0xd8, 0x35, 0x07, 0xfa, 0xa0, 0x1e, 0xcf, 0xef, 0x40,
- 0xc7, 0x28, 0xef, 0xf2, 0x39, 0x68, 0xff, 0x5c, 0x45, 0xbd, 0xa5, 0x9f,
- 0x94, 0xe7, 0x98, 0x71, 0xfc, 0x43, 0xb8, 0xb5, 0x89, 0xcb, 0x96, 0xe4,
- 0xf7, 0x07, 0xab, 0xec, 0x67, 0xe0, 0x3d, 0xcd, 0x3c, 0x5b, 0xf8, 0x03,
- 0x09, 0xfa, 0x37, 0xdd, 0x04, 0x81, 0xfc, 0x30, 0x82, 0x66, 0xf2, 0x91,
- 0x0e, 0x73, 0xfe, 0x17, 0xc2, 0x89, 0xd9, 0xf9, 0x20, 0x82, 0x8f, 0x61,
- 0x21, 0x38, 0x18, 0xfd, 0x07, 0x5b, 0x68, 0x37, 0x97, 0x34, 0xe7, 0x12,
- 0xf7, 0x93, 0x19, 0x34, 0x00, 0xc0, 0x80, 0xf0, 0xf7, 0x25, 0xed, 0x65,
- 0x67, 0x6d, 0xe5, 0xfd, 0x6b, 0x1f, 0x2f, 0x34, 0x74, 0xf1, 0x9e, 0xeb,
- 0x25, 0x3e, 0x7f, 0x73, 0x4e, 0x2c, 0x42, 0x64, 0x92, 0xc0, 0x4d, 0x4b,
- 0x20, 0x05, 0x36, 0x76, 0xb1, 0x8d, 0xe3, 0x74, 0x20, 0x60, 0x71, 0xe3,
- 0x5f, 0x75, 0x4e, 0xff, 0x34, 0x5d, 0x5b, 0x8f, 0x4c, 0xca, 0x48, 0x0f,
- 0x88, 0xdd, 0xe1, 0x56, 0x15, 0x48, 0xb9, 0x08, 0x18, 0x59, 0x30, 0xc3,
- 0xc3, 0x93, 0x13, 0xcf, 0x4c, 0x11, 0x48, 0xde, 0x6b, 0xda, 0x0d, 0xd8,
- 0xb1, 0xf1, 0x3f, 0x1c, 0x72, 0x4d, 0x80, 0x0b, 0xbc, 0x24, 0x51, 0x58,
- 0x89, 0xe6, 0x86, 0x34, 0x08, 0xcd, 0x38, 0x6f, 0x3b, 0xa6, 0x3e, 0x72,
- 0x0c, 0xf6, 0xda, 0xdf, 0xe0, 0xbb, 0x3c, 0xc7, 0x3c, 0xd7, 0x7c, 0x92,
- 0x56, 0xa4, 0x72, 0x62, 0x4e, 0x52, 0x3b, 0x99, 0x75, 0xe4, 0x5c, 0x51,
- 0x6c, 0x41, 0x2e, 0xc4, 0xe7, 0x4c, 0x57, 0xf1, 0x79, 0xc2, 0x78, 0x53,
- 0x7c, 0x80, 0x33, 0xad, 0xb9, 0xc0, 0xc2, 0x65, 0xd3, 0x31, 0x57, 0xdb,
- 0x4d, 0xba, 0x7e, 0x80, 0x4a, 0xe8, 0xde, 0x3b, 0xa5, 0x55, 0x4e, 0x2e,
- 0x88, 0x7e, 0x25, 0x90, 0xb1, 0xfb, 0x6b, 0x15, 0x94, 0x8f, 0xd9, 0x88,
- 0x9b, 0x2d, 0x81, 0x49, 0x66, 0x59, 0x41, 0x4f, 0xcc, 0x2b, 0x3e, 0xeb,
- 0x63, 0xde, 0xf2, 0x46, 0xc9, 0x18, 0x8a, 0x0a, 0x57, 0xa7, 0x6c, 0x2c,
- 0x57, 0x89, 0x46, 0xda, 0xea, 0xa0, 0xda, 0x07, 0x4b, 0x61, 0x78, 0xf3,
- 0xd3, 0xb3, 0xa2, 0x47, 0xf6, 0x33, 0x95, 0x8d, 0x13, 0x99, 0x10, 0x98,
- 0xcc, 0xc3, 0x37, 0xde, 0x0d, 0x87, 0x6b, 0xe6, 0xee, 0xa5, 0x07, 0xa6,
- 0x1e, 0x86, 0x77, 0x99, 0x60, 0x9c, 0xc9, 0x3a, 0xbd, 0x92, 0xc7, 0xa6,
- 0x61, 0x3a, 0xe9, 0xaa, 0x77, 0xd4, 0xcc, 0x8c, 0x1c, 0x92, 0x39, 0xcf,
- 0x60, 0x7a, 0xcc, 0x3a, 0x29, 0xc2, 0xe3, 0x0f, 0xa6, 0xe6, 0x4b, 0x2c,
- 0xc7, 0x93, 0xc9, 0x3f, 0x60, 0x77, 0x77, 0xbd, 0xe6, 0x37, 0xea, 0x76,
- 0x48, 0xa1, 0x6c, 0x31, 0x1b, 0xd7, 0xa4, 0xd4, 0x96, 0x5b, 0x6f, 0xac,
- 0x37, 0x2a, 0xe3, 0xbf, 0xf3, 0xe1, 0x78, 0xf1, 0xe5, 0x2c, 0xd9, 0x91,
- 0x20, 0xef, 0x63, 0x8a, 0x3a, 0xab, 0x2a, 0xb8, 0x1c, 0x5c, 0x76, 0xd3,
- 0xd8, 0x83, 0xf3, 0xe9, 0x74, 0xfc, 0x84, 0x9b, 0x29, 0x18, 0xce, 0x94,
- 0x80, 0xc6, 0xfc, 0xa2, 0x01, 0xcc, 0x88, 0x6f, 0x9b, 0xd6, 0x3d, 0xbb,
- 0x4e, 0x42, 0x8f, 0x61, 0xa7, 0xaf, 0x89, 0x9d, 0xb5, 0xaa, 0x1d, 0xe4,
- 0xd5, 0x07, 0xb3, 0x93, 0x8c, 0xe1, 0x58, 0x37, 0xed, 0xeb, 0xe0, 0xdb,
- 0x52, 0xb3, 0x75, 0x4b, 0x93, 0x8a, 0x64, 0xf4, 0x8e, 0xaf, 0x19, 0x83,
- 0xb4, 0x21, 0x27, 0x54, 0x78, 0x2b, 0x18, 0xf5, 0xed, 0x15, 0x47, 0x96,
- 0x42, 0x13, 0x1c, 0x7c, 0xb0, 0x25, 0x78, 0xa7, 0x9d, 0xea, 0x32, 0x31,
- 0xf0, 0xb3, 0x33, 0xeb, 0xf4, 0x3b, 0x57, 0xc2, 0x56, 0x0e, 0x2e, 0x96,
- 0xeb, 0x79, 0x6a, 0x93, 0x9f, 0x22, 0x32, 0x9f, 0x84, 0xe5, 0x4b, 0x66,
- 0x4e, 0x98, 0x02, 0x91, 0x0b, 0x3f, 0xfa, 0xfb, 0x0e, 0x9f, 0xca, 0x17,
- 0xfa, 0x34, 0x46, 0xda, 0x8a, 0x53, 0xbe, 0x39, 0xbd, 0xbb, 0xae, 0x2f,
- 0xb4, 0xeb, 0x4e, 0x2e, 0xe1, 0x63, 0xc2, 0x09, 0xce, 0x62, 0xea, 0x30,
- 0x56, 0x5e, 0xba, 0x1f, 0xf0, 0xe5, 0x24, 0x65, 0x67, 0x57, 0x2e, 0x2e,
- 0x54, 0x9a, 0x05, 0x8c, 0x1a, 0x46, 0x0c, 0x44, 0x61, 0xac, 0x6e, 0x50,
- 0x7c, 0x56, 0xc2, 0x31, 0x45, 0xd1, 0xaa, 0xab, 0xce, 0xec, 0xca, 0xe1,
- 0x1d, 0x23, 0x48, 0x48, 0x1f, 0x0a, 0xe1, 0xed, 0x71, 0xf9, 0x18, 0x26,
- 0x07, 0xc6, 0xf2, 0xfb, 0xee, 0x75, 0xe4, 0xca, 0x08, 0x75, 0x70, 0x78,
- 0x70, 0x19, 0x64, 0x16, 0x11, 0x49, 0x8a, 0x1a, 0x6d, 0xe3, 0x6c, 0x67,
- 0x47, 0x8f, 0xf7, 0x32, 0x3b, 0x9e, 0x77, 0xd4, 0x4b, 0x3b, 0x45, 0xf9,
- 0x03, 0xb6, 0xa6, 0x92, 0xe4, 0xc0, 0x82, 0x4d, 0x4e, 0x88, 0xda, 0x93,
- 0xb3, 0x2c, 0xb0, 0x72, 0x44, 0x7d, 0xbc, 0x14, 0x13, 0xd4, 0x26, 0x01,
- 0xfb, 0xe4, 0xbb, 0xc2, 0xb0, 0x1d, 0xf0, 0xd5, 0xb9, 0xca, 0xbb, 0x2f,
- 0xc6, 0xa7, 0xf3, 0x65, 0xac, 0x04, 0xb7, 0xfb, 0xbd, 0x2d, 0x48, 0x49,
- 0x76, 0x83, 0x3a, 0x00, 0x94, 0xb4, 0xe5, 0xfd, 0xed, 0x26, 0x52, 0xbb,
- 0xbb, 0x9f, 0x04, 0xee, 0x28, 0xbf, 0x4b, 0x37, 0x3f, 0xf3, 0x54, 0x3f,
- 0xcf, 0xd6, 0xe4, 0x17, 0xca, 0x20, 0xe0, 0x8c, 0xb1, 0x1d, 0xdb, 0xd0,
- 0xf9, 0xd2, 0x91, 0x6e, 0x29, 0x3b, 0x9a, 0xf0, 0xae, 0x3c, 0x0f, 0xc5,
- 0xa0, 0x7a, 0xbf, 0x50, 0x5a, 0xda, 0xbd, 0x76, 0x9f, 0x79, 0x3e, 0xd2,
- 0x15, 0xa1, 0x94, 0x10, 0xd8, 0x99, 0x2b, 0x08, 0x30, 0xd9, 0x68, 0xdc,
- 0x68, 0xd6, 0x45, 0x0f, 0xcf, 0xc3, 0x0d, 0x75, 0x75, 0x18, 0xdf, 0xc6,
- 0x21, 0x4d, 0x5a, 0xda, 0xdb, 0x4b, 0x28, 0x0f, 0x0e, 0x57, 0x74, 0xf1,
- 0xb0, 0x5c, 0x89, 0x91, 0x74, 0x7d, 0x43, 0xfe, 0xe0, 0xb3, 0x61, 0x8b,
- 0x56, 0xc4, 0xc5, 0xeb, 0xce, 0xf4, 0x9d, 0x96, 0x87, 0xe4, 0xaa, 0x77,
- 0xaa, 0x25, 0xa6, 0xbf, 0x50, 0xec, 0x55, 0x05, 0x95, 0xc9, 0x54, 0x02,
- 0x1b, 0xee, 0xa5, 0xe5, 0xf2, 0xbc, 0x28, 0xe9, 0x53, 0xec, 0xf3, 0x4d,
- 0xce, 0xfa, 0xe4, 0x68, 0x13, 0xd2, 0x7e, 0x0f, 0xaa, 0x5d, 0x9b, 0xde,
- 0xd8, 0xfc, 0xc1, 0xb1, 0xce, 0xb0, 0xb7, 0xf7, 0x6e, 0x43, 0x53, 0x58,
- 0x70, 0xee, 0x60, 0x60, 0x40, 0x37, 0x96, 0xc8, 0xb3, 0x80, 0xce, 0x99,
- 0x9e, 0x15, 0xd9, 0xa4, 0xec, 0xce, 0x0d, 0xc3, 0xbb, 0xb8, 0x60, 0xdc,
- 0xb1, 0xde, 0x05, 0x9f, 0xe9, 0x0d, 0x0b, 0x4b, 0x0f, 0x29, 0xb4, 0xe9,
- 0xb9, 0xd2, 0xcd, 0xe9, 0xce, 0xaf, 0x53, 0x41, 0xbc, 0x1e, 0xf4, 0xd4,
- 0xdd, 0x4b, 0x25, 0x2f, 0x33, 0x1b, 0xdf, 0xbd, 0xce, 0x39, 0xd2, 0x3f,
- 0xc4, 0xb1, 0xab, 0x94, 0xd1, 0x8c, 0xf7, 0xe5, 0x85, 0xa8, 0xa1, 0x95,
- 0x94, 0x3d, 0x9c, 0x48, 0x2a, 0x04, 0xb3, 0x27, 0x2b, 0x24, 0x1d, 0x2e,
- 0x5e, 0x26, 0x57, 0x9b, 0x3b, 0x92, 0xd7, 0x98, 0xca, 0xe1, 0xde, 0xc2,
- 0xd2, 0xc8, 0xb3, 0xda, 0xfa, 0xb8, 0xfb, 0xa0, 0x8e, 0xb0, 0x83, 0x24,
- 0xa7, 0xd5, 0xc8, 0x0d, 0x96, 0x9d, 0x00, 0xe7, 0xbf, 0xad, 0x46, 0x44,
- 0x2d, 0xab, 0x51, 0x03, 0x5b, 0x7f, 0x60, 0x88, 0xc3, 0xbd, 0x18, 0x7c,
- 0x3c, 0xe2, 0xcb, 0x32, 0xe5, 0xf0, 0xc5, 0xdf, 0xca, 0x80, 0xea, 0xbd,
- 0x03, 0x76, 0x0f, 0x85, 0x4d, 0x98, 0x02, 0xf9, 0x48, 0x73, 0xef, 0x29,
- 0x89, 0xaa, 0xb9, 0xdd, 0x04, 0x71, 0x56, 0x3b, 0xcf, 0xa9, 0xd6, 0x9b,
- 0x3d, 0x5c, 0xea, 0x09, 0x05, 0x3c, 0xc3, 0xd7, 0x31, 0x83, 0xcf, 0xa7,
- 0x32, 0x82, 0xc8, 0xda, 0xc4, 0xd3, 0xce, 0xf4, 0xd4, 0xc7, 0x37, 0xa5,
- 0x60, 0x8e, 0xbd, 0x87, 0xad, 0x74, 0xcc, 0x53, 0xdf, 0x31, 0xc5, 0xa8,
- 0xbf, 0x2c, 0x20, 0xcd, 0xb0, 0x8f, 0xcc, 0x83, 0x8e, 0xda, 0x9e, 0xc2,
- 0xf2, 0xfd, 0x9f, 0x4d, 0x5d, 0x10, 0xf7, 0x92, 0xd6, 0xc0, 0xd8, 0x0d,
- 0x50, 0xb0, 0x7d, 0xe9, 0x8f, 0x6d, 0x71, 0x9e, 0x8d, 0xc8, 0x87, 0x01,
- 0x9b, 0x8e, 0xb9, 0x15, 0x69, 0xde, 0xb4, 0xde, 0x47, 0xb3, 0x1b, 0xa9,
- 0x52, 0xc8, 0x07, 0xa2, 0xa5, 0x92, 0x05, 0xaf, 0xce, 0xc5, 0x17, 0xca,
- 0xf4, 0x5d, 0x8c, 0x98, 0xbf, 0x5f, 0x43, 0xc9, 0x3b, 0xc4, 0x53, 0x92,
- 0xe0, 0xea, 0x2b, 0x7d, 0xb1, 0xab, 0x87, 0x5a, 0x52, 0x70, 0xdf, 0xb4,
- 0xf5, 0xe2, 0x68, 0xdb, 0x84, 0xb6, 0xc7, 0x52, 0xba, 0x8a, 0xfb, 0x89,
- 0xa3, 0xed, 0x76, 0x18, 0xda, 0x97, 0xf0, 0x66, 0x0d, 0xd8, 0x83, 0x89,
- 0x4d, 0xb2, 0xbb, 0x1a, 0x91, 0xbb, 0x9e, 0x73, 0x97, 0x27, 0x66, 0x49,
- 0x27, 0x1a, 0xa7, 0x6a, 0x13, 0xdf, 0x9a, 0x4e, 0x18, 0xe2, 0x5f, 0x8d,
- 0x5d, 0x7e, 0xc7, 0xcf, 0x13, 0x1f, 0x3f, 0x97, 0xb7, 0xb6, 0x2b, 0xd5,
- 0x6f, 0x10, 0x54, 0x09, 0x00, 0xa5, 0x57, 0x31, 0x19, 0x4f, 0xdd, 0xcd,
- 0x0d, 0x99, 0xa5, 0xdb, 0x74, 0xf0, 0x15, 0xe0, 0xe3, 0x7d, 0x3a, 0xb8,
- 0x9e, 0x8c, 0x92, 0x0f, 0xae, 0x7e, 0x5c, 0x60, 0x4a, 0x39, 0x3e, 0xdb,
- 0xbc, 0xec, 0x49, 0xa5, 0xbc, 0xfa, 0x02, 0xef, 0xf0, 0x51, 0x30, 0x37,
- 0x61, 0x83, 0x94, 0xaf, 0x5f, 0x68, 0x8d, 0x8c, 0xa5, 0x94, 0x98, 0xe4,
- 0xa2, 0xd9, 0xf7, 0xbc, 0x15, 0x77, 0x96, 0x51, 0x0d, 0x7a, 0x79, 0x7c,
- 0xfb, 0x21, 0x6f, 0xc5, 0x4a, 0x46, 0xe1, 0xd0, 0xdc, 0x81, 0xa6, 0x33,
- 0xc7, 0x34, 0x72, 0xb8, 0xa8, 0xa0, 0x15, 0x80, 0x9d, 0x23, 0x43, 0xdc,
- 0x95, 0xcf, 0x62, 0xfc, 0xe5, 0xe6, 0xec, 0x2d, 0x6b, 0x40, 0x4d, 0xcb,
- 0x34, 0x44, 0x68, 0xeb, 0x91, 0xd5, 0x5b, 0x4d, 0xb4, 0x13, 0x26, 0xaf,
- 0xcf, 0x93, 0x5e, 0x9f, 0x4d, 0xb8, 0x8e, 0x67, 0xb4, 0x23, 0xd2, 0x8d,
- 0x26, 0xc9, 0xd3, 0xef, 0x8a, 0xf3, 0x09, 0x2c, 0xc6, 0x02, 0xa7, 0xab,
- 0x89, 0xdf, 0x54, 0x15, 0xf4, 0x0b, 0xec, 0xcc, 0x48, 0xe7, 0xb5, 0xe8,
- 0x90, 0x9c, 0x32, 0xa5, 0x8a, 0x68, 0x70, 0x2a, 0x6b, 0xc2, 0x46, 0x3b,
- 0x54, 0x98, 0xfa, 0x7a, 0x3c, 0x44, 0xcd, 0x43, 0xb2, 0x2b, 0xd2, 0x48,
- 0x87, 0x9f, 0xc0, 0x3c, 0x79, 0x7b, 0x9e, 0x4d, 0x1c, 0xd3, 0xa8, 0x1a,
- 0x39, 0xf0, 0xd3, 0x86, 0x6b, 0x33, 0x0d, 0x18, 0x3b, 0x35, 0xb6, 0xc9,
- 0xc8, 0xe1, 0x62, 0xbc, 0x7b, 0x43, 0x8a, 0xb1, 0x0a, 0xe8, 0xed, 0x78,
- 0x25, 0x5e, 0xc8, 0x7e, 0xf4, 0x4a, 0xd0, 0x85, 0x70, 0xe6, 0x51, 0x28,
- 0x7e, 0xd7, 0x11, 0x66, 0x73, 0x11, 0xad, 0x90, 0x99, 0x45, 0x50, 0x9c,
- 0x5c, 0x3c, 0x03, 0x19, 0xa2, 0x6f, 0x6d, 0xca, 0x7a, 0x0c, 0x42, 0x7e,
- 0x98, 0x4a, 0x79, 0x8d, 0xcc, 0x98, 0x68, 0x38, 0x7c, 0x9b, 0xdb, 0xda,
- 0x11, 0x69, 0x11, 0x49, 0x06, 0xf9, 0xb1, 0x9a, 0xaa, 0xbe, 0xa7, 0xd4,
- 0xd7, 0x9c, 0xae, 0x95, 0x0a, 0x49, 0xff, 0xe8, 0xc7, 0xa1, 0x52, 0x75,
- 0xaa, 0x87, 0xfc, 0xdc, 0x64, 0xb0, 0x59, 0xb2, 0x3a, 0x82, 0xcd, 0xda,
- 0x65, 0xac, 0x62, 0x56, 0x21, 0xf0, 0x5a, 0x3c, 0xcf, 0xbd, 0x55, 0x1b,
- 0xe6, 0x03, 0xde, 0xf8, 0x5d, 0xbf, 0x0b, 0x7a, 0x16, 0xbb, 0xf4, 0x0a,
- 0x67, 0x06, 0x52, 0x69, 0x29, 0xf3, 0x98, 0x4e, 0x5f, 0x8f, 0x4a, 0x77,
- 0xf3, 0x76, 0x7f, 0x71, 0x4c, 0x0f, 0x4b, 0x8e, 0xd3, 0x44, 0x23, 0xd7,
- 0x89, 0x95, 0x27, 0xd5, 0x39, 0xb2, 0xda, 0x48, 0x9b, 0x35, 0xb8, 0x72,
- 0xd3, 0xf2, 0x22, 0xe3, 0x55, 0xed, 0x60, 0x83, 0xcf, 0xd8, 0xcb, 0x12,
- 0x77, 0xa8, 0xc7, 0xc0, 0x62, 0x4c, 0xf5, 0x09, 0x12, 0x05, 0x9e, 0xed,
- 0x5f, 0xad, 0xd6, 0xe8, 0x3f, 0x83, 0x67, 0x2d, 0x79, 0xb5, 0xbf, 0xf1,
- 0x10, 0x8d, 0xc6, 0xc8, 0x36, 0x5a, 0xdc, 0x0f, 0x04, 0x7c, 0x59, 0x77,
- 0x30, 0x33, 0xb3, 0x1b, 0xa4, 0x0e, 0x14, 0xd3, 0x27, 0xeb, 0xdf, 0x3b,
- 0x7e, 0xa3, 0x54, 0x29, 0x6d, 0x61, 0x30, 0x74, 0x9b, 0x25, 0x12, 0xe3,
- 0x0b, 0x56, 0x1f, 0x79, 0xdf, 0x93, 0x85, 0x3c, 0x9c, 0x53, 0x04, 0x8c,
- 0x8c, 0xa3, 0xd2, 0xc1, 0xaa, 0x84, 0xb8, 0x21, 0xe9, 0x10, 0x72, 0xe1,
- 0x0e, 0x7d, 0xef, 0x94, 0x65, 0xb6, 0x12, 0xa4, 0x26, 0xc5, 0x22, 0xb6,
- 0xf8, 0xe1, 0x34, 0xcc, 0x72, 0xf8, 0xf8, 0x23, 0xfa, 0x3c, 0x03, 0xc5,
- 0xc8, 0x0f, 0x9f, 0x31, 0xc9, 0x67, 0x20, 0xf1, 0xea, 0xc0, 0x56, 0x80,
- 0x70, 0xe1, 0x2d, 0x56, 0x31, 0x0c, 0xf6, 0x69, 0x0f, 0x0e, 0x6b, 0xd1,
- 0x4b, 0x63, 0xdd, 0x20, 0xe9, 0x63, 0xdf, 0x2a, 0x33, 0x37, 0xbf, 0x4e,
- 0x83, 0xc0, 0x61, 0x2b, 0xb3, 0xad, 0x7b, 0xac, 0x96, 0x29, 0xaa, 0x87,
- 0xbe, 0x38, 0xf8, 0x1d, 0x8f, 0x5b, 0x91, 0xa1, 0x07, 0xdb, 0x7e, 0x1e,
- 0xde, 0xfb, 0xf3, 0x68, 0x18, 0x94, 0x7d, 0x65, 0x95, 0x71, 0xd2, 0xef,
- 0x7c, 0x44, 0xe4, 0xf2, 0xd1, 0xe8, 0x28, 0xdb, 0x18, 0xd3, 0x73, 0x28,
- 0xe1, 0xa7, 0x5d, 0x1f, 0x10, 0x67, 0x2a, 0xfa, 0xf7, 0x72, 0x12, 0x87,
- 0xa3, 0xa6, 0x45, 0x04, 0x88, 0x48, 0x0c, 0x92, 0x1c, 0x3c, 0x02, 0xe8,
- 0x7c, 0x9a, 0xcb, 0x27, 0xdc, 0xc7, 0x67, 0xfd, 0xbe, 0xd6, 0xac, 0xf5,
- 0xf2, 0xd5, 0x7a, 0x4e, 0x3c, 0x1a, 0x78, 0xe1, 0x0f, 0x26, 0xc2, 0xae,
- 0x61, 0x2f, 0xb7, 0xb3, 0x9b, 0x63, 0x60, 0x39, 0x69, 0xdf, 0xef, 0x11,
- 0xb8, 0xbb, 0x03, 0xaa, 0x8c, 0xe9, 0xe3, 0x6b, 0xc1, 0x10, 0xc5, 0xaa,
- 0x28, 0xc2, 0x2e, 0xfc, 0x96, 0xe1, 0xd5, 0x97, 0xe2, 0x95, 0x45, 0x3a,
- 0x1e, 0x91, 0x17, 0x4d, 0x8c, 0xb1, 0x75, 0x0c, 0x5d, 0x1e, 0x4b, 0xea,
- 0x5f, 0xf3, 0x6d, 0xc7, 0x3f, 0xcc, 0xb2, 0x21, 0x39, 0x7e, 0xf5, 0xe1,
- 0x32, 0xc9, 0xa5, 0x68, 0x05, 0x8d, 0xe0, 0xe9, 0x99, 0xd9, 0x68, 0x8f,
- 0x4c, 0xde, 0xcc, 0x62, 0x1d, 0x92, 0x60, 0xe6, 0xb3, 0x33, 0x35, 0xa0,
- 0xdb, 0x71, 0xa1, 0x81, 0x06, 0x9b, 0x43, 0xa6, 0xc7, 0xa9, 0xff, 0x65,
- 0x78, 0xb5, 0xca, 0xf3, 0x3d, 0x66, 0x73, 0xc9, 0xbc, 0x47, 0x60, 0x81,
- 0x93, 0xe6, 0xd7, 0x69, 0x71, 0x27, 0xf7, 0x09, 0x3b, 0x84, 0xe3, 0x87,
- 0x52, 0x80, 0xaf, 0x7a, 0xc8, 0xb8, 0x41, 0x11, 0x16, 0x27, 0x3a, 0x8b,
- 0xab, 0xcc, 0x04, 0xc6, 0xdf, 0x23, 0xaa, 0x48, 0x5d, 0x53, 0x92, 0xed,
- 0xb3, 0x47, 0xd7, 0x6c, 0x94, 0xf6, 0x79, 0xd0, 0x6b, 0xbc, 0x46, 0x45,
- 0x66, 0xb3, 0xd6, 0xfc, 0xcd, 0xfd, 0xb3, 0x04, 0x39, 0x82, 0x7a, 0xf6,
- 0x27, 0xbd, 0x2d, 0x8a, 0x9b, 0x5f, 0xcf, 0x61, 0xb9, 0x09, 0x33, 0xf9,
- 0xd8, 0x1c, 0xc5, 0x7a, 0x7c, 0x77, 0x20, 0xb3, 0xa0, 0xcf, 0x35, 0x10,
- 0x49, 0x9a, 0xdc, 0x7c, 0x71, 0xa8, 0xfd, 0x02, 0x69, 0xeb, 0x58, 0x3e,
- 0x92, 0x42, 0xdf, 0xcd, 0xbd, 0xc7, 0xb9, 0x6a, 0x33, 0x12, 0xfb, 0x8c,
- 0x7f, 0x60, 0xee, 0x3c, 0x30, 0x84, 0x81, 0xf9, 0x12, 0x0a, 0xc2, 0x17,
- 0xcb, 0x62, 0xaf, 0xa9, 0xa4, 0x7c, 0xa1, 0xbd, 0xf2, 0x96, 0xb0, 0xc7,
- 0xe0, 0x4e, 0x4e, 0x6c, 0xa9, 0xbc, 0x94, 0xf4, 0xa6, 0x3d, 0x1e, 0xed,
- 0x9d, 0xe1, 0x40, 0xf4, 0xb1, 0xc3, 0x76, 0x3a, 0xaa, 0xa2, 0x68, 0x5a,
- 0x0d, 0x7c, 0x75, 0xba, 0x68, 0xb1, 0x63, 0x14, 0xdd, 0xa3, 0xd4, 0x59,
- 0xf8, 0xcb, 0x55, 0xe0, 0x11, 0x09, 0xb3, 0xc7, 0xc2, 0x26, 0x85, 0xc0,
- 0x7d, 0x67, 0xd5, 0x3b, 0xa1, 0x1a, 0xdd, 0xae, 0x30, 0xe5, 0xae, 0xe9,
- 0xe3, 0xf6, 0x0f, 0x82, 0x6a, 0xcb, 0x83, 0x15, 0x7b, 0x52, 0x37, 0x4f,
- 0x03, 0xa4, 0x88, 0xad, 0x6d, 0x4f, 0xae, 0x3e, 0xaf, 0xa7, 0x90, 0x01,
- 0x00, 0xda, 0xeb, 0xa7, 0x01, 0x90, 0xd5, 0xbf, 0x0e, 0xf9, 0xd7, 0xae,
- 0x91, 0x20, 0x3a, 0x66, 0xde, 0x13, 0xbc, 0x78, 0x81, 0xcc, 0xed, 0x2b,
- 0xf1, 0x02, 0x6a, 0x52, 0x9c, 0x19, 0x5d, 0x26, 0xe2, 0xdb, 0xaa, 0x6c,
- 0x58, 0x87, 0x11, 0xc3, 0xa3, 0x7b, 0x29, 0x4e, 0x65, 0xd3, 0x0e, 0x26,
- 0xba, 0x09, 0xa6, 0x4a, 0x45, 0xc9, 0xfd, 0x71, 0x1b, 0x8c, 0xb7, 0xe9,
- 0xa8, 0x81, 0x49, 0x68, 0xeb, 0xc9, 0x0b, 0x73, 0x73, 0x12, 0x76, 0x55,
- 0x83, 0x85, 0x93, 0x85, 0x9b, 0xcc, 0x33, 0x8c, 0x61, 0x98, 0xd8, 0xdf,
- 0x74, 0xca, 0xa1, 0x11, 0xa3, 0xe4, 0x07, 0x80, 0xca, 0xda, 0xda, 0xe3,
- 0x65, 0xec, 0x43, 0x92, 0x00, 0x2b, 0xfc, 0xc0, 0x28, 0xcd, 0xb4, 0xb7,
- 0xca, 0x50, 0xcd, 0xa2, 0x08, 0x62, 0x31, 0x16, 0x63, 0x4e, 0xf4, 0x00,
- 0xb6, 0xe4, 0x2e, 0x8a, 0x94, 0x91, 0x0e, 0xe3, 0x66, 0xb5, 0xfb, 0xd6,
- 0x7b, 0x8c, 0x41, 0xa4, 0x5a, 0xc6, 0xe5, 0x78, 0xaa, 0x84, 0x23, 0x30,
- 0xdd, 0x50, 0x65, 0xbf, 0x8f, 0xe1, 0x98, 0xc4, 0x5d, 0x71, 0xe5, 0x0c,
- 0x36, 0x38, 0x30, 0xad, 0x81, 0x3b, 0x4c, 0xbd, 0x21, 0x25, 0x7c, 0x25,
- 0x09, 0xf2, 0x1e, 0x8e, 0x04, 0xe1, 0xd5, 0x0c, 0x8e, 0x1f, 0x3a, 0xd2,
- 0x3a, 0xf5, 0x0d, 0x01, 0x6f, 0x5e, 0x0a, 0x22, 0xbd, 0x3d, 0xe9, 0x3c,
- 0xea, 0xa5, 0x53, 0x24, 0x65, 0xee, 0x4c, 0x6f, 0x3e, 0xc3, 0xa4, 0xd6,
- 0xc3, 0xdf, 0x67, 0x4f, 0x50, 0x40, 0xa2, 0xa0, 0x83, 0xab, 0x08, 0xa0,
- 0x8f, 0xca, 0x1f, 0x58, 0x38, 0x62, 0x8b, 0xf2, 0x9c, 0x2d, 0x7b, 0x3d,
- 0xd8, 0x99, 0x96, 0xd9, 0xb2, 0x76, 0x2a, 0xef, 0x6b, 0x8e, 0x36, 0x1f,
- 0x2e, 0x81, 0x93, 0x0c, 0x8a, 0xb2, 0x2e, 0xa0, 0x34, 0x53, 0x71, 0xca,
- 0x53, 0x5a, 0x33, 0xa5, 0x59, 0x86, 0xc0, 0x16, 0xf7, 0xef, 0xbd, 0x32,
- 0xa8, 0xb4, 0xeb, 0x61, 0xe4, 0x75, 0x05, 0x01, 0x21, 0x85, 0xa8, 0xfc,
- 0x21, 0x21, 0x24, 0x9e, 0x49, 0x09, 0x94, 0x7d, 0xae, 0x05, 0x90, 0x7e,
- 0xd0, 0xe4, 0x62, 0x28, 0xf9, 0x99, 0x23, 0xdb, 0x4b, 0xc1, 0x66, 0xad,
- 0xda, 0xfd, 0x9d, 0x70, 0x84, 0x86, 0xbd, 0x4e, 0x51, 0x99, 0x83, 0x59,
- 0x1f, 0x86, 0x80, 0x49, 0x65, 0x4e, 0x1c, 0x8e, 0xfc, 0xcd, 0x05, 0x7d,
- 0xb2, 0xe2, 0x13, 0xba, 0x3c, 0xeb, 0xa2, 0x06, 0x57, 0x8a, 0xe5, 0x3b,
- 0x8f, 0x3a, 0x92, 0xd0, 0x3a, 0xb8, 0x18, 0x5a, 0x26, 0x05, 0x15, 0x00,
- 0xae, 0x13, 0xa7, 0x92, 0xf1, 0x05, 0x4c, 0xc2, 0xf6, 0xf3, 0x69, 0xd1,
- 0x1a, 0x64, 0xc2, 0xe3, 0xa8, 0x65, 0x61, 0x6e, 0x36, 0x47, 0x05, 0x12,
- 0xe1, 0x30, 0x38, 0xd9, 0x5d, 0xfd, 0xc9, 0xa1, 0x9c, 0x89, 0x3a, 0x5e,
- 0xc3, 0x38, 0x36, 0xc4, 0xe1, 0x12, 0x01, 0x27, 0x41, 0xe1, 0x73, 0x9f,
- 0xb8, 0x30, 0x10, 0xf5, 0xbb, 0xb9, 0x6d, 0xcf, 0xfb, 0xbd, 0x74, 0xb1,
- 0x6e, 0xad, 0x0b, 0xf6, 0x5a, 0x53, 0x44, 0xb8, 0xf3, 0xaf, 0xf5, 0x6d,
- 0x86, 0xd4, 0x26, 0x40, 0xb3, 0xec, 0x4c, 0x10, 0xac, 0xe5, 0x88, 0xbd,
- 0x26, 0x38, 0x7c, 0xf4, 0xde, 0x6a, 0x8b, 0x6e, 0x0c, 0x51, 0x0f, 0x3c,
- 0xd7, 0x90, 0x8e, 0xe9, 0xae, 0x85, 0x8a, 0x67, 0x89, 0x03, 0xbd, 0x2b,
- 0x8c, 0x6e, 0xd0, 0x99, 0x88, 0xc8, 0x90, 0x49, 0x51, 0x24, 0xa3, 0x6d,
- 0xe8, 0xd9, 0x2e, 0xd9, 0x6d, 0xfe, 0x50, 0x5b, 0x70, 0xb0, 0x34, 0x4b,
- 0x88, 0x17, 0x48, 0x58, 0xb2, 0x81, 0xa6, 0x02, 0x91, 0x3b, 0xb6, 0xd0,
- 0x0f, 0xa0, 0x8e, 0x68, 0x5f, 0xd9, 0xc2, 0x25, 0xc0, 0xea, 0x9d, 0x23,
- 0x8b, 0x6a, 0x94, 0x06, 0x07, 0x52, 0xb2, 0x7a, 0x3c, 0x7f, 0x0f, 0xd7,
- 0x24, 0x92, 0x5e, 0xd7, 0x81, 0x46, 0xac, 0x1d, 0x3e, 0x4a, 0xa7, 0x12,
- 0x10, 0x95, 0xc0, 0x16, 0x4f, 0xac, 0x92, 0x18, 0x0f, 0xef, 0x8a, 0x92,
- 0x9c, 0xb9, 0x7f, 0x1a, 0x1f, 0x56, 0xe7, 0xa7, 0x96, 0xad, 0x88, 0xe8,
- 0x9a, 0x4b, 0x4e, 0x04, 0x6a, 0x4f, 0x72, 0x61, 0x62, 0xe7, 0x3f, 0xa8,
- 0x0a, 0xd9, 0x65, 0x99, 0x29, 0x2b, 0x88, 0x4e, 0xde, 0xde, 0xee, 0x14,
- 0xdc, 0x99, 0x1b, 0xc3, 0x7f, 0x9a, 0xd9, 0x99, 0x41, 0xcd, 0x07, 0x88,
- 0x42, 0x7b, 0x1f, 0xa2, 0xae, 0x2b, 0x33, 0x3b, 0xf4, 0xf5, 0xb4, 0xee,
- 0x53, 0xf0, 0xf2, 0x25, 0x1d, 0x67, 0x60, 0x73, 0xfa, 0x92, 0x59, 0x60,
- 0xc6, 0xfd, 0xb6, 0x0b, 0xa8, 0xef, 0xd7, 0xf7, 0xab, 0x4f, 0x6e, 0x97,
- 0x3b, 0xad, 0x16, 0xa7, 0x3d, 0x46, 0xe5, 0x3c, 0x8a, 0xed, 0x3e, 0xe8,
- 0x91, 0xf1, 0x14, 0xe5, 0xb2, 0xb0, 0x05, 0x23, 0xc6, 0xae, 0xd6, 0x66,
- 0x47, 0x8c, 0x19, 0x43, 0x99, 0x3a, 0x68, 0xa9, 0xab, 0xe7, 0xd8, 0xb4,
- 0xea, 0x26, 0xfd, 0x5a, 0x51, 0xcb, 0xc5, 0xa0, 0xf7, 0x4a, 0x7c, 0x82,
- 0x69, 0x06, 0x93, 0x7e, 0xbb, 0xe6, 0x22, 0xd6, 0x6e, 0xa9, 0xf0, 0xb9,
- 0x9a, 0xcf, 0x94, 0x38, 0x00, 0x00, 0xe1, 0xbf, 0xe6, 0xf4, 0x8d, 0x5b,
- 0x8a, 0x0a, 0x03, 0x2d, 0x8f, 0x39, 0x61, 0xbc, 0xe0, 0xc6, 0xe0, 0x1e,
- 0x3d, 0xe1, 0x95, 0xd9, 0xea, 0x75, 0xc6, 0x00, 0x95, 0x74, 0x2c, 0xb3,
- 0x07, 0xd8, 0x41, 0x64, 0x9a, 0xae, 0xfd, 0x13, 0x9a, 0xc8, 0xf5, 0xaa,
- 0x46, 0xa6, 0xb6, 0xe3, 0x84, 0x9f, 0x9a, 0x3e, 0xbf, 0xbb, 0x6c, 0x8b,
- 0x2b, 0xb0, 0x55, 0xa9, 0x75, 0x61, 0x51, 0x7c, 0x04, 0xc8, 0x55, 0x5a,
- 0x5c, 0xf0, 0xf5, 0x5d, 0x5a, 0x18, 0x5b, 0xf0, 0x4d, 0x2a, 0x89, 0x27,
- 0xcc, 0x44, 0x5d, 0xc8, 0x51, 0xa1, 0x65, 0xfa, 0x52, 0xe5, 0x5a, 0xf3,
- 0x46, 0xb4, 0x50, 0x59, 0x22, 0xf1, 0xb1, 0x77, 0x8d, 0xa0, 0x2d, 0x91,
- 0x9a, 0x00, 0xb1, 0x94, 0xb3, 0xb1, 0x12, 0x73, 0x21, 0xff, 0x9b, 0x3d,
- 0x72, 0x72, 0xe1, 0xa9, 0xe4, 0x35, 0x67, 0x19, 0x53, 0x8a, 0x2c, 0xcc,
- 0xdb, 0x71, 0x39, 0x2b, 0x91, 0x76, 0xe4, 0x38, 0xcf, 0x50, 0x22, 0xbc,
- 0xad, 0x58, 0x37, 0xf8, 0x48, 0x35, 0x02, 0x5b, 0x6c, 0xbf, 0xd8, 0x28,
- 0xba, 0x58, 0x69, 0x5b, 0x7f, 0x0f, 0x6c, 0x08, 0x89, 0x6e, 0xeb, 0x70,
- 0xa2, 0x9f, 0x79, 0x90, 0xa4, 0x3e, 0x33, 0x63, 0x68, 0x27, 0xd0, 0x1e,
- 0x1f, 0xb8, 0x3d, 0x3a, 0xcf, 0xe6, 0x68, 0xaf, 0x13, 0xc2, 0x57, 0x32,
- 0x8a, 0x33, 0x86, 0x4e, 0xaf, 0xde, 0xb5, 0xcd, 0xd8, 0x95, 0xc5, 0x86,
- 0x61, 0x30, 0x48, 0x0e, 0x8c, 0x48, 0x20, 0x7c, 0xa9, 0xc5, 0x8f, 0xef,
- 0xcd, 0xd9, 0xbb, 0x13, 0x16, 0x01, 0x9f, 0xc4, 0x0f, 0x29, 0x81, 0x0c,
- 0x21, 0x50, 0xe1, 0x2d, 0x18, 0x49, 0xe8, 0x14, 0xf2, 0x0f, 0x33, 0x3a,
- 0xb9, 0x0b, 0x56, 0xe8, 0xb8, 0x6b, 0x67, 0xed, 0x36, 0x37, 0x93, 0x18,
- 0xc9, 0xeb, 0xa8, 0xab, 0xe3, 0x0a, 0x47, 0x84, 0x3b, 0x99, 0x42, 0xa0,
- 0x5e, 0x6d, 0xba, 0xc6, 0x64, 0x70, 0x52, 0xfc, 0x31, 0x1e, 0x94, 0x21,
- 0xbf, 0x2e, 0xfd, 0xb4, 0x9a, 0x0d, 0x94, 0x0a, 0xf8, 0x16, 0x65, 0xb4,
- 0xbc, 0x1a, 0xa7, 0x40, 0x96, 0x67, 0x77, 0xee, 0x29, 0x3a, 0x81, 0x2f,
- 0xee, 0xfb, 0x73, 0xfc, 0x47, 0x06, 0xa1, 0x86, 0xc5, 0x69, 0x8a, 0x31,
- 0xab, 0xc0, 0xd4, 0x06, 0x75, 0x4c, 0x7d, 0xc3, 0x39, 0x75, 0xc5, 0x0e,
- 0x51, 0x95, 0x78, 0xff, 0x18, 0xef, 0xe1, 0x47, 0x9a, 0xfc, 0xa5, 0xe4,
- 0x90, 0xcf, 0xd2, 0x21, 0x61, 0x6d, 0x1a, 0xde, 0xcc, 0xab, 0x87, 0x2f,
- 0x76, 0x4e, 0xe7, 0xce, 0xb8, 0x64, 0x79, 0x57, 0x6b, 0x41, 0x1f, 0xb3,
- 0xd1, 0x98, 0x36, 0x30, 0xed, 0xfc, 0xf4, 0x93, 0x69, 0x76, 0xbb, 0x91,
- 0x61, 0x79, 0x6b, 0x29, 0x51, 0x10, 0x00, 0xc1, 0x9b, 0xe5, 0xaa, 0xc3,
- 0xae, 0xc4, 0xa9, 0x24, 0x12, 0x2c, 0x73, 0xce, 0xd4, 0xa7, 0x5a, 0xcc,
- 0x8c, 0xb8, 0x03, 0x14, 0x2f, 0x30, 0x02, 0x1c, 0xac, 0x42, 0x28, 0xfa,
- 0xbf, 0x13, 0xbe, 0xdb, 0xb0, 0x0a, 0xe1, 0xff, 0xb2, 0x99, 0xdd, 0xa5,
- 0xbc, 0xa7, 0x91, 0x02, 0x42, 0x02, 0xb3, 0xc5, 0xd1, 0x22, 0x25, 0x8c,
- 0x5a, 0x08, 0x5e, 0xc8, 0x5b, 0xed, 0x3e, 0xd7, 0xf0, 0xc5, 0x7d, 0x9e,
- 0x7d, 0x81, 0xfe, 0x69, 0xb0, 0x50, 0x8e, 0x31, 0x0c, 0x27, 0x4e, 0x27,
- 0x79, 0xa8, 0x22, 0x56, 0xa1, 0x2d, 0x91, 0x46, 0xc5, 0x68, 0xbb, 0xb2,
- 0x80, 0x6b, 0xaf, 0x09, 0x95, 0x01, 0xe3, 0xd3, 0xc9, 0x5a, 0x0b, 0x41,
- 0xc1, 0xb1, 0xa6, 0x79, 0x31, 0x71, 0x45, 0x9a, 0x20, 0xc3, 0xf3, 0x98,
- 0xb7, 0x03, 0xef, 0x76, 0x9d, 0x5f, 0xdc, 0xf3, 0x53, 0x0e, 0x1b, 0x4e,
- 0x7d, 0xbb, 0x44, 0x54, 0xb4, 0xc8, 0x16, 0x14, 0x62, 0x32, 0x75, 0xd8,
- 0x79, 0x1a, 0x16, 0xe1, 0xfb, 0x01, 0xaa, 0xb9, 0x70, 0x86, 0xf1, 0xf9,
- 0x29, 0xca, 0x43, 0x74, 0x67, 0xf7, 0xe4, 0x04, 0x74, 0xa7, 0xf2, 0xb3,
- 0xc8, 0x27, 0x57, 0x07, 0x30, 0x65, 0x9f, 0xf9, 0x96, 0x29, 0xd7, 0x61,
- 0x1e, 0x1c, 0xc3, 0x05, 0x21, 0xe3, 0xf5, 0x4e, 0x48, 0xa2, 0xcf, 0x6a,
- 0xd3, 0xe7, 0xd6, 0xe7, 0x15, 0x5c, 0x3e, 0xcf, 0x9a, 0x1c, 0x4b, 0xf6,
- 0xc3, 0x68, 0x04, 0xd0, 0x7d, 0xa6, 0x83, 0x55, 0x9b, 0x83, 0x7d, 0xf1,
- 0xea, 0x6f, 0x41, 0xa5, 0x9b, 0x83, 0x1a, 0xac, 0x28, 0x7b, 0x4e, 0xef,
- 0x74, 0x37, 0x19, 0x62, 0xb8, 0x8b, 0x75, 0xf3, 0x75, 0x0e, 0xf5, 0x84,
- 0x62, 0x3f, 0x65, 0xa0, 0x65, 0x62, 0x67, 0x29, 0xe9, 0x80, 0x68, 0xb0,
- 0x0b, 0x46, 0x59, 0xa6, 0x95, 0xb5, 0xfb, 0xbb, 0x6e, 0x91, 0x08, 0x3a,
- 0x4f, 0x6e, 0xa7, 0xea, 0x5c, 0x6e, 0x65, 0x5f, 0xa4, 0xe4, 0x26, 0xcd,
- 0x9e, 0x83, 0xf0, 0x5e, 0xa9, 0x7a, 0x53, 0xbd, 0x43, 0x96, 0x25, 0xd2,
- 0xc3, 0x5b, 0x54, 0x19, 0x0c, 0x33, 0xaa, 0xa8, 0xed, 0xa2, 0x3b, 0x57,
- 0xa0, 0xbb, 0x37, 0x90, 0x8c, 0x1b, 0x25, 0x7b, 0xb2, 0xd5, 0xf3, 0x99,
- 0xec, 0xec, 0x95, 0x62, 0xda, 0x51, 0x50, 0xc8, 0xcb, 0x7d, 0x77, 0xfb,
- 0x76, 0x6f, 0x7f, 0x72, 0xd0, 0xd0, 0x0a, 0x36, 0xda, 0x53, 0xf1, 0x22,
- 0x43, 0x2f, 0x18, 0x75, 0x7c, 0x8d, 0x6d, 0x5a, 0xc5, 0xbc, 0x4e, 0x60,
- 0x1e, 0x6b, 0xed, 0xa5, 0xfc, 0x47, 0x48, 0xd0, 0x64, 0x2d, 0x07, 0xc5,
- 0x7b, 0xf9, 0xa2, 0x38, 0x96, 0x46, 0xe9, 0x66, 0xd6, 0x6f, 0xbd, 0xde,
- 0x10, 0xe2, 0x2c, 0xc9, 0x03, 0x42, 0xe8, 0xac, 0x07, 0x5b, 0x50, 0x44,
- 0x83, 0x9e, 0x16, 0xc3, 0x73, 0x29, 0x68, 0xf5, 0x68, 0x65, 0x4b, 0x45,
- 0x88, 0x43, 0xba, 0x08, 0xee, 0xc0, 0x24, 0x9f, 0x80, 0x4f, 0x65, 0x9c,
- 0x5a, 0xc4, 0xfd, 0x65, 0x3f, 0x73, 0xf9, 0xa6, 0xd2, 0x72, 0x2d, 0xbb,
- 0xd1, 0x5b, 0x2f, 0x2d, 0x7d, 0x41, 0x45, 0x2c, 0x3e, 0xfb, 0xaa, 0x91,
- 0x0c, 0xbb, 0x54, 0x79, 0xf3, 0x9f, 0xac, 0x25, 0x1f, 0x53, 0x22, 0x11,
- 0x64, 0x88, 0xe9, 0xbd, 0xf0, 0x2f, 0xa6, 0xd0, 0xdf, 0x5d, 0xf2, 0x7a,
- 0xbb, 0xed, 0x0e, 0x09, 0xec, 0x6b, 0x18, 0x6f, 0xf0, 0xa9, 0x08, 0x3f,
- 0xc4, 0x31, 0x4f, 0x0f, 0xec, 0x71, 0x51, 0xf7, 0x71, 0xbe, 0xd5, 0x2a,
- 0xab, 0xe1, 0x6c, 0x42, 0xad, 0x55, 0x65, 0x05, 0xb1, 0x3d, 0x78, 0x70,
- 0xf0, 0xc1, 0xb5, 0xc3, 0x1c, 0xc6, 0x21, 0xb9, 0x04, 0x19, 0x3a, 0x8e,
- 0xbe, 0xbb, 0x84, 0x3a, 0x30, 0x2c, 0x0a, 0xa6, 0x44, 0x15, 0x86, 0x09,
- 0x05, 0x7d, 0x12, 0xa7, 0x79, 0x59, 0x63, 0x02, 0x11, 0xcf, 0x30, 0xc2,
- 0xf3, 0xea, 0xff, 0x10, 0x82, 0xe7, 0x06, 0x81, 0x6f, 0x7d, 0x02, 0x96,
- 0x52, 0x0f, 0xe6, 0xca, 0xcf, 0x07, 0x42, 0x03, 0xe7, 0x95, 0x8d, 0xbf,
- 0x45, 0xbf, 0x95, 0xad, 0x29, 0x69, 0xcf, 0x0f, 0x6d, 0xaa, 0x60, 0xce,
- 0xa3, 0x1d, 0xe0, 0xd9, 0xfb, 0x06, 0x54, 0x36, 0xe8, 0x24, 0xb1, 0x16,
- 0xaf, 0x82, 0x24, 0x67, 0x58, 0x7b, 0xe4, 0x14, 0x24, 0x11, 0xee, 0x8f,
- 0xb4, 0xb2, 0xdc, 0xf9, 0xea, 0x15, 0x5e, 0xb7, 0x42, 0x64, 0x46, 0x58,
- 0x7a, 0xe2, 0x44, 0x6f, 0x90, 0x1a, 0xb7, 0x31, 0xc5, 0xf2, 0xee, 0x24,
- 0x6b, 0xb2, 0x0b, 0x16, 0xcc, 0x34, 0x1e, 0xc5, 0xf1, 0xd1, 0xa6, 0x0e,
- 0x31, 0x4e, 0x2b, 0x17, 0xf6, 0xf8, 0xc8, 0x76, 0xcb, 0x17, 0x6d, 0x15,
- 0x85, 0x4f, 0x34, 0xbd, 0x94, 0x88, 0x64, 0x8e, 0x8a, 0x87, 0x16, 0x25,
- 0x03, 0x5d, 0x17, 0xc9, 0xc1, 0x04, 0x96, 0xa3, 0x3c, 0xed, 0xe2, 0x6b,
- 0xee, 0xfb, 0x5e, 0xfa, 0xc2, 0xbd, 0x74, 0x0a, 0x89, 0x83, 0xab, 0x45,
- 0x32, 0x82, 0xf8, 0x44, 0x42, 0xd5, 0x45, 0xbc, 0x46, 0xc0, 0xce, 0xbc,
- 0xeb, 0xf9, 0xf3, 0xae, 0x4d, 0x0b, 0xed, 0x6d, 0xbf, 0x0c, 0x2a, 0x29,
- 0xc2, 0xc6, 0x91, 0xd2, 0x73, 0xc4, 0xd3, 0x18, 0x27, 0x85, 0x1d, 0xae,
- 0x40, 0x37, 0xa7, 0x20, 0xf8, 0x84, 0x6c, 0xdc, 0x71, 0x3e, 0x27, 0x10,
- 0x09, 0xde, 0xa8, 0xb3, 0x4a, 0x5c, 0xc8, 0xf5, 0x80, 0x4a, 0x36, 0xaf,
- 0xed, 0xb2, 0xae, 0xd5, 0xc4, 0x45, 0x7d, 0xa7, 0x0f, 0x46, 0xd9, 0x44,
- 0xfa, 0xf1, 0x7e, 0x9c, 0x76, 0x45, 0x21, 0xa5, 0x62, 0x01, 0xc1, 0x7e,
- 0x7b, 0xa0, 0xab, 0xce, 0xdd, 0xe4, 0x46, 0xb9, 0x28, 0x42, 0xdf, 0xfc,
- 0x99, 0x61, 0x89, 0x66, 0xec, 0xa6, 0x77, 0x05, 0xa7, 0x7a, 0x8a, 0xb9,
- 0x3a, 0x2d, 0x66, 0x0b, 0x11, 0x13, 0xcb, 0xf7, 0xff, 0x2c, 0x90, 0xa1,
- 0x5c, 0x99, 0x93, 0xbb, 0xbd, 0xc7, 0x6f, 0xfa, 0x98, 0xaf, 0xc4, 0x10,
- 0x5d, 0xc5, 0xd5, 0x68, 0xef, 0xca, 0xb0, 0x7e, 0x85, 0xd8, 0xf9, 0xd9,
- 0xb8, 0x42, 0x6c, 0xed, 0xb8, 0x60, 0x32, 0x18, 0x5d, 0xbc, 0x44, 0xf7,
- 0x8e, 0xb3, 0xac, 0xaf, 0x8e, 0x05, 0xd3, 0x3e, 0x3c, 0x4d, 0x04, 0xa6,
- 0xfe, 0x48, 0x9e, 0xf8, 0x73, 0xd9, 0xc2, 0x89, 0x6b, 0x4f, 0xd6, 0xa2,
- 0xa6, 0x61, 0x0e, 0x22, 0xf0, 0x9d, 0xc8, 0xbe, 0x96, 0x34, 0x8c, 0x7c,
- 0xfc, 0xe9, 0x69, 0x47, 0x1b, 0xb6, 0x3c, 0x27, 0x43, 0x66, 0x0c, 0x97,
- 0x1c, 0x0d, 0x8f, 0x09, 0x69, 0x18, 0xce, 0x16, 0xb7, 0x9b, 0x13, 0xa4,
- 0xd7, 0x65, 0x47, 0xb8, 0xa5, 0x0c, 0x24, 0xd2, 0x46, 0xc6, 0xcf, 0x26,
- 0x43, 0x44, 0x8c, 0x3c, 0xf3, 0x3a, 0xbc, 0xb9, 0x34, 0x17, 0x31, 0xd7,
- 0x61, 0xe3, 0xb5, 0x8a, 0xab, 0xca, 0x41, 0x2f, 0x02, 0x86, 0xf7, 0xb2,
- 0xc8, 0x57, 0xc4, 0x3e, 0xad, 0x2d, 0xc4, 0x55, 0x4f, 0x09, 0xe2, 0xcc,
- 0x9c, 0x19, 0xe3, 0xe1, 0xde, 0xb8, 0xd7, 0x4f, 0xb7, 0x42, 0x48, 0xe1,
- 0x47, 0xaf, 0xef, 0x00, 0x13, 0x43, 0x20, 0x46, 0xd3, 0xe6, 0x7c, 0x1c,
- 0xf8, 0x18, 0x92, 0xd6, 0xd9, 0x67, 0x47, 0xd5, 0xea, 0xa2, 0x64, 0xb0,
- 0x08, 0xc2, 0x5a, 0x63, 0x04, 0x06, 0xb9, 0x93, 0x83, 0xee, 0x17, 0xaf,
- 0xfb, 0x8e, 0x3a, 0x3f, 0xbf, 0x88, 0xdc, 0xdd, 0x41, 0xfb, 0xf3, 0xff,
- 0x1c, 0xfd, 0xca, 0x3c, 0xac, 0x9d, 0xed, 0x6c, 0xc0, 0x3f, 0xc5, 0xc1,
- 0xbf, 0x8f, 0xc2, 0xbe, 0x16, 0xf5, 0xaf, 0x3a, 0xfd, 0xef, 0xa1, 0x20,
- 0x2b, 0x1b, 0x97, 0x7f, 0x08, 0xfd, 0x51, 0x75, 0x2f, 0x3b, 0xfb, 0x7f,
- 0x22, 0xc6, 0xfc, 0x15, 0xe2, 0x68, 0x67, 0x65, 0xfb, 0x4f, 0x81, 0x18,
- 0xbf, 0x02, 0xc1, 0x56, 0x0e, 0x3f, 0xe2, 0x10, 0x10, 0xa5, 0x00, 0x7f,
- 0xd2, 0x8d, 0x19, 0xff, 0x7a, 0x06, 0xf8, 0x97, 0xff, 0xa9, 0x22, 0x63,
- 0xfc, 0x35, 0x46, 0x00, 0x90, 0x01, 0xa4, 0xc6, 0x80, 0xea, 0x3b, 0x32,
- 0x23, 0x08, 0xbf, 0xfc, 0x30, 0xf6, 0x4f, 0xff, 0x3b, 0xee, 0x4d, 0x1d,
- 0xf8, 0x3a, 0x6e, 0x34, 0xe0, 0x86, 0x2a, 0x7c, 0x1d, 0xdc, 0x4c, 0x99,
- 0xf6, 0xff, 0x82, 0xfd, 0xee, 0x7f, 0x07, 0xbf, 0x29, 0xfe, 0x5e, 0x07,
- 0xff, 0x31, 0x1f, 0x7f, 0x48, 0xc1, 0xd7, 0x51, 0x9f, 0x7f, 0xf8, 0x89,
- 0xf2, 0xbb, 0xff, 0x89, 0xfa, 0x27, 0x5d, 0xf8, 0x17, 0x2a, 0xde, 0x95,
- 0x71, 0x20, 0xfc, 0xea, 0xd5, 0xd7, 0x71, 0x73, 0xdb, 0x7f, 0xe2, 0xfc,
- 0xf2, 0x7f, 0xca, 0xf6, 0xa6, 0x96, 0x7c, 0x3d, 0x5b, 0x0d, 0x84, 0x7f,
- 0x54, 0x96, 0xaf, 0x93, 0x79, 0x7b, 0xfe, 0x7b, 0xa5, 0xb9, 0xa9, 0xba,
- 0x5e, 0x27, 0x4b, 0x44, 0xfc, 0xa3, 0x06, 0xfb, 0x77, 0x44, 0xbf, 0xfb,
- 0xdf, 0x89, 0x6e, 0x4a, 0x76, 0xd7, 0x89, 0xda, 0x90, 0xff, 0x2c, 0xe0,
- 0xfd, 0x27, 0x4c, 0x37, 0xc5, 0xb6, 0xeb, 0x4c, 0xee, 0x28, 0xff, 0x20,
- 0xbd, 0x5d, 0xa7, 0x8a, 0x49, 0xfd, 0xf7, 0xa8, 0x6e, 0x6a, 0x49, 0xd7,
- 0xa9, 0x4e, 0x50, 0xff, 0xac, 0x2c, 0xfd, 0x1d, 0xd3, 0xef, 0xfe, 0x77,
- 0xa6, 0x9b, 0xaa, 0xcf, 0x75, 0xa6, 0x66, 0xb4, 0x7f, 0xd4, 0x80, 0xfe,
- 0x13, 0xb2, 0x9b, 0x62, 0xc9, 0x8d, 0xf5, 0x82, 0xfe, 0x47, 0xe9, 0xe4,
- 0x3f, 0x21, 0xba, 0x79, 0x85, 0x7b, 0x9d, 0xa8, 0x1b, 0xeb, 0x8f, 0x17,
- 0xba, 0x7f, 0xb7, 0xa6, 0xfe, 0x37, 0xa2, 0x9b, 0x5f, 0x87, 0xd7, 0x89,
- 0xc6, 0x88, 0xfe, 0xd7, 0x6f, 0xc5, 0x7f, 0x5a, 0xc4, 0xbf, 0xfc, 0xef,
- 0x84, 0x37, 0x8f, 0xee, 0xd7, 0x09, 0x0b, 0x49, 0xff, 0xf6, 0x20, 0xff,
- 0xef, 0x93, 0xfc, 0xa9, 0x05, 0x5c, 0xdf, 0x81, 0x54, 0xa9, 0xfe, 0xea,
- 0xb1, 0xff, 0x49, 0xee, 0x37, 0x9b, 0xf5, 0xf5, 0xdc, 0x3d, 0xa8, 0x6e,
- 0xb6, 0xee, 0xff, 0x36, 0x69, 0xf4, 0x1b, 0x49, 0xcb, 0x53, 0xff, 0x4f,
- 0xc3, 0xbb, 0x8e, 0xac, 0xff, 0xed, 0x67, 0xcf, 0xf8, 0xdd, 0xff, 0x13,
- 0x32, 0xf6, 0x0d, 0x64, 0x57, 0xea, 0xdf, 0xba, 0xee, 0xff, 0x5f, 0xf8,
- 0x27, 0xd4, 0xbf, 0x75, 0xea, 0xff, 0x16, 0xfe, 0xe6, 0xcb, 0xec, 0xa2,
- 0xfe, 0xab, 0x23, 0x5f, 0x87, 0x95, 0x67, 0xf8, 0x59, 0xde, 0xdf, 0xfd,
- 0x3f, 0xc1, 0x62, 0xde, 0x80, 0x5d, 0xa7, 0xbe, 0x71, 0x22, 0xf8, 0x6f,
- 0xc1, 0x31, 0x6e, 0x80, 0xe3, 0xd0, 0x5c, 0x3f, 0x45, 0xfc, 0x7b, 0xd8,
- 0x28, 0x3f, 0xfe, 0xba, 0x0a, 0x40, 0x72, 0xf5, 0xcf, 0xf9, 0x6a, 0x9b,
- 0x11, 0xa6, 0xf9, 0x31, 0xfa, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x01,
- 0x81, 0x55, 0x99, 0xb6, 0x26, 0x00, 0x00,
- },
- "conf/content/git-bare.zip",
- )
-}
-
-func conf_etc_supervisord_conf() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x8c, 0x94,
- 0xc1, 0x6e, 0xdb, 0x30, 0x0c, 0x86, 0xcf, 0xd3, 0x53, 0xf0, 0xb0, 0x63,
- 0x1a, 0x77, 0xc5, 0x76, 0x49, 0xe1, 0xcb, 0x30, 0x60, 0x97, 0x0d, 0x01,
- 0x8a, 0xed, 0x54, 0x04, 0x86, 0x6c, 0xd1, 0xb6, 0x10, 0x4b, 0x32, 0x28,
- 0xaa, 0x6b, 0x76, 0xd8, 0xb3, 0x8f, 0x72, 0xdc, 0x35, 0xc1, 0x92, 0x26,
- 0x39, 0xc4, 0xb1, 0xf2, 0xf3, 0x23, 0x4d, 0xf2, 0xf7, 0x63, 0xf2, 0xf6,
- 0xb9, 0xea, 0x99, 0xc7, 0x2a, 0x22, 0x3d, 0x21, 0x6d, 0x54, 0x6b, 0x07,
- 0x2c, 0x0b, 0x76, 0x63, 0x11, 0xd3, 0x28, 0x67, 0x36, 0x06, 0x5a, 0xc6,
- 0xd0, 0x6c, 0xe1, 0xf4, 0xe7, 0x1e, 0x46, 0xcd, 0x3d, 0x70, 0x80, 0x5d,
- 0x48, 0x04, 0x59, 0x89, 0x0c, 0x99, 0xa2, 0xd4, 0xe3, 0x2b, 0xc2, 0x6c,
- 0xd4, 0x10, 0xba, 0x09, 0x2e, 0xd7, 0x03, 0xb6, 0x59, 0xca, 0xfd, 0x69,
- 0xf0, 0x81, 0x08, 0xb2, 0x68, 0x82, 0xce, 0x94, 0xca, 0xe9, 0xe7, 0x7a,
- 0xc7, 0x18, 0xcb, 0x4f, 0xb7, 0xdf, 0x3f, 0x9f, 0xa9, 0x6d, 0x8f, 0x11,
- 0xa5, 0x75, 0xc9, 0x41, 0xb4, 0xbf, 0x11, 0x42, 0x0b, 0x33, 0x01, 0x6a,
- 0x6c, 0x03, 0x21, 0x50, 0x60, 0xcd, 0x36, 0xf8, 0x7f, 0xe4, 0x5a, 0x37,
- 0xdb, 0x34, 0xc6, 0xf2, 0xc3, 0xed, 0x1b, 0xd8, 0x89, 0xec, 0x93, 0xab,
- 0x91, 0x32, 0x33, 0xc7, 0xa0, 0x81, 0x34, 0xbe, 0xd0, 0x63, 0xc6, 0x0d,
- 0xf8, 0x84, 0x43, 0xf9, 0x4b, 0x93, 0x7f, 0x9b, 0x34, 0xe3, 0xac, 0x6f,
- 0xc3, 0x02, 0x0c, 0xd6, 0xa9, 0x5b, 0x40, 0x8e, 0x5a, 0x00, 0x93, 0x6e,
- 0x50, 0x8d, 0xd6, 0x9c, 0x1a, 0x8b, 0x59, 0xca, 0x1f, 0x67, 0x66, 0xb2,
- 0x8f, 0x90, 0x6a, 0x9a, 0xfd, 0xc3, 0xf9, 0x60, 0x34, 0xba, 0xe0, 0xcb,
- 0x56, 0x0f, 0x11, 0xaf, 0xa9, 0x86, 0x92, 0x3f, 0x9a, 0x80, 0x8e, 0xa0,
- 0x61, 0x0f, 0x51, 0x4e, 0x4a, 0x35, 0xb9, 0x43, 0x77, 0x1f, 0xaf, 0x78,
- 0xb2, 0xe3, 0x56, 0x45, 0xd6, 0xc4, 0xd2, 0xa8, 0xa9, 0x3e, 0x83, 0xb1,
- 0x21, 0x3b, 0x72, 0xa0, 0x98, 0xa1, 0x23, 0x85, 0x26, 0x96, 0x77, 0xb7,
- 0x17, 0x3a, 0xff, 0x3f, 0x34, 0x07, 0x62, 0x8c, 0x47, 0xbc, 0x24, 0x2b,
- 0x5d, 0x52, 0x08, 0x7c, 0x55, 0x89, 0x99, 0x67, 0xb0, 0xd5, 0x69, 0x60,
- 0xc8, 0x91, 0xaa, 0xe9, 0xed, 0x60, 0x64, 0x88, 0xc6, 0x52, 0x5e, 0x59,
- 0xd9, 0x66, 0x1a, 0x1b, 0xeb, 0x19, 0xa9, 0x95, 0x99, 0xac, 0x5e, 0x5b,
- 0xb3, 0x51, 0x07, 0x4e, 0x39, 0xd4, 0x54, 0xf2, 0x25, 0x95, 0xec, 0xa0,
- 0x84, 0x33, 0x8a, 0x95, 0xd3, 0xdb, 0xbc, 0xca, 0xd6, 0x57, 0x87, 0xc7,
- 0x47, 0xce, 0x69, 0x78, 0x90, 0x0c, 0x93, 0x3b, 0x13, 0x0d, 0x65, 0x76,
- 0xec, 0xaa, 0x28, 0x2e, 0x38, 0xf4, 0x3e, 0x3f, 0x83, 0xcc, 0x6b, 0x56,
- 0xc3, 0xcf, 0x87, 0x6f, 0x00, 0xb2, 0xee, 0xf3, 0xd1, 0x6c, 0x53, 0xc9,
- 0x23, 0x8d, 0xeb, 0x48, 0xbb, 0x55, 0x17, 0xba, 0xb8, 0x51, 0x4d, 0x70,
- 0x4e, 0x7b, 0x23, 0x05, 0x17, 0xb9, 0x71, 0xc5, 0x97, 0xbc, 0xc0, 0x41,
- 0x92, 0x14, 0x5d, 0xc8, 0x36, 0x2f, 0x22, 0x35, 0x45, 0x67, 0xb9, 0x4f,
- 0xf5, 0x52, 0xb4, 0x72, 0x2a, 0x37, 0x31, 0x5f, 0x62, 0x31, 0xcd, 0x75,
- 0x19, 0xfb, 0x77, 0xf7, 0xd0, 0xa3, 0xf8, 0xca, 0xa5, 0xc8, 0xe2, 0x31,
- 0xe0, 0x5e, 0x3c, 0x86, 0x7a, 0x00, 0xa9, 0x7e, 0x01, 0x5e, 0xc6, 0xf1,
- 0x07, 0xa4, 0x90, 0xf7, 0x5f, 0xd7, 0x0f, 0xeb, 0xf5, 0x0f, 0x18, 0xec,
- 0x16, 0x95, 0x4e, 0x1c, 0xa6, 0x78, 0xc9, 0xcc, 0x94, 0x50, 0x45, 0x36,
- 0x21, 0x71, 0xf5, 0x62, 0xd5, 0x12, 0x8e, 0x5f, 0x1a, 0x37, 0x39, 0xe3,
- 0x8d, 0x88, 0x90, 0x28, 0xbf, 0x3f, 0xd4, 0xfe, 0xe7, 0x05, 0xbd, 0x28,
- 0xc2, 0x24, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x75, 0xb0, 0x31,
- 0xf7, 0x04, 0x00, 0x00,
- },
- "conf/etc/supervisord.conf",
- )
-}
-
-func conf_gitignore_android() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x44, 0x8e,
- 0xcd, 0x4a, 0x05, 0x31, 0x0c, 0x85, 0xf7, 0x7d, 0x8a, 0xc0, 0xdd, 0xa8,
- 0xc8, 0xcc, 0x3b, 0x88, 0x3f, 0x20, 0x0a, 0xae, 0xdc, 0x4a, 0xa6, 0xcd,
- 0xf4, 0x86, 0x09, 0x6d, 0x48, 0x3b, 0x17, 0x7d, 0x7b, 0xdb, 0x32, 0xdc,
- 0xbb, 0x09, 0x9c, 0x7e, 0x1f, 0x3d, 0xe7, 0x04, 0x4f, 0x3b, 0x4b, 0x05,
- 0x54, 0x15, 0xf6, 0x58, 0x39, 0x27, 0x58, 0x59, 0xa8, 0xb8, 0x87, 0x09,
- 0x75, 0x1b, 0xf7, 0xc7, 0xb9, 0x13, 0xbc, 0xf6, 0x47, 0x58, 0xb3, 0x41,
- 0x3d, 0x13, 0x3c, 0xa3, 0x5c, 0x78, 0x83, 0xef, 0xcf, 0x26, 0x04, 0xfa,
- 0xed, 0xc2, 0x3b, 0x5e, 0x10, 0xbc, 0x60, 0x29, 0xd7, 0x0f, 0x46, 0xea,
- 0xec, 0x8d, 0x12, 0x19, 0x56, 0x0a, 0x07, 0x5a, 0x38, 0xcd, 0x2e, 0x52,
- 0x3b, 0x1d, 0x1a, 0x06, 0xa1, 0x83, 0x4c, 0x71, 0xa4, 0xd9, 0x2d, 0x6d,
- 0x56, 0x18, 0xfc, 0x23, 0x7b, 0x14, 0xf0, 0x39, 0xad, 0x1c, 0x77, 0xbb,
- 0x4d, 0x84, 0xbb, 0x12, 0x36, 0x50, 0xac, 0xe7, 0x47, 0xa0, 0xea, 0xef,
- 0x9d, 0x74, 0x71, 0x52, 0xcb, 0x4a, 0x56, 0x99, 0x46, 0xf3, 0x97, 0xe5,
- 0xb8, 0xa3, 0xb5, 0xe2, 0x2c, 0x81, 0x0c, 0xe2, 0x75, 0xc9, 0xf2, 0x07,
- 0x2f, 0x5e, 0x58, 0x0b, 0x39, 0x3d, 0xa4, 0xf9, 0x3f, 0x00, 0x00, 0xff,
- 0xff, 0x00, 0x96, 0x67, 0x2c, 0x0e, 0x01, 0x00, 0x00,
- },
- "conf/gitignore/Android",
- )
-}
-
-func conf_gitignore_c() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x24, 0x8d,
- 0x3d, 0x0e, 0xc2, 0x30, 0x0c, 0x85, 0xf7, 0x9c, 0xc2, 0x52, 0x17, 0xe8,
- 0x90, 0x53, 0xc0, 0x16, 0x89, 0x81, 0x81, 0x39, 0x3f, 0x46, 0x18, 0xa2,
- 0xba, 0x8a, 0x53, 0x51, 0x6e, 0x8f, 0x9d, 0x0e, 0xfe, 0x86, 0x4f, 0x7e,
- 0xef, 0x4d, 0x70, 0x4b, 0x6f, 0xcc, 0x1d, 0x9e, 0x54, 0x51, 0xdc, 0xec,
- 0x59, 0xef, 0xc3, 0xce, 0x4d, 0x10, 0x28, 0xb5, 0xd8, 0x68, 0xd8, 0x4a,
- 0x49, 0x19, 0x4d, 0xdf, 0x5f, 0xb1, 0x61, 0x01, 0x1e, 0x31, 0x81, 0x13,
- 0x2d, 0xd9, 0xc3, 0x83, 0x96, 0xc2, 0x5f, 0x81, 0x4b, 0x08, 0x72, 0xd6,
- 0xcf, 0x52, 0xab, 0x52, 0x78, 0xc0, 0xcf, 0x66, 0x7e, 0xd6, 0xa1, 0xf9,
- 0xeb, 0x8e, 0x79, 0xeb, 0x31, 0x1d, 0x73, 0xb8, 0xa3, 0x8d, 0x6e, 0xdd,
- 0xea, 0xd7, 0xf5, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xca, 0x54, 0xa9, 0x22,
- 0x8f, 0x00, 0x00, 0x00,
- },
- "conf/gitignore/C",
- )
-}
-
-func conf_gitignore_c_sharp() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x6c, 0x54,
- 0x4d, 0x6f, 0xe3, 0x36, 0x10, 0xbd, 0xf3, 0x57, 0x0c, 0xe0, 0xa2, 0xed,
- 0x6a, 0x13, 0x09, 0x28, 0x8a, 0x5e, 0x7a, 0x4a, 0x9c, 0xdd, 0x24, 0xc0,
- 0x36, 0x09, 0x6c, 0x6f, 0xb7, 0x80, 0x61, 0x18, 0x14, 0x39, 0x96, 0x18,
- 0x53, 0x24, 0xcb, 0x8f, 0xc4, 0xee, 0xa1, 0xbf, 0xbd, 0x43, 0x4a, 0x6e,
- 0xb2, 0xbb, 0xb9, 0x3c, 0x51, 0xc3, 0x99, 0xe1, 0xf0, 0xcd, 0xf0, 0xcd,
- 0xe0, 0x32, 0x29, 0x2d, 0xe1, 0xa3, 0xd5, 0x12, 0x7d, 0x80, 0x9f, 0x8f,
- 0x36, 0x81, 0xe0, 0x06, 0xf6, 0x88, 0x0e, 0x5a, 0x65, 0x40, 0xed, 0x80,
- 0x6c, 0x3f, 0x49, 0xd0, 0x6a, 0x8f, 0x67, 0x10, 0x2d, 0x84, 0x68, 0x3d,
- 0x82, 0xd4, 0x3a, 0x00, 0x37, 0x12, 0x9c, 0x6c, 0xc3, 0x3b, 0xb6, 0xbe,
- 0x6c, 0x37, 0xca, 0x34, 0x6c, 0x7d, 0x6f, 0x37, 0xed, 0x63, 0xc3, 0xd8,
- 0x0c, 0x86, 0x10, 0x31, 0x44, 0x28, 0xe0, 0x31, 0x24, 0x1d, 0x03, 0x5b,
- 0xd1, 0xcf, 0x62, 0x5a, 0xb3, 0xd9, 0x0c, 0x6e, 0x3b, 0x93, 0x93, 0xfd,
- 0xa9, 0x42, 0xe2, 0x1a, 0x96, 0x31, 0x49, 0x65, 0x29, 0x62, 0x70, 0xd6,
- 0x73, 0x7f, 0x84, 0x9d, 0xd2, 0x18, 0xce, 0xa0, 0x2d, 0x35, 0x4e, 0x39,
- 0xce, 0xf2, 0xa9, 0x39, 0xb6, 0x6c, 0x42, 0x87, 0x06, 0x3d, 0x8f, 0x28,
- 0xa1, 0x3d, 0x82, 0xb3, 0x2e, 0x69, 0xee, 0xbf, 0xc9, 0xc7, 0xa5, 0x3c,
- 0xb7, 0x26, 0xd4, 0xb9, 0xa8, 0xcf, 0x01, 0xfd, 0x79, 0x70, 0x28, 0xd4,
- 0x4e, 0x89, 0x31, 0x05, 0xab, 0xea, 0x90, 0x2c, 0x61, 0xa2, 0xbd, 0xfc,
- 0xa3, 0x4d, 0x2d, 0xad, 0x08, 0x91, 0xb2, 0xe6, 0x2a, 0x27, 0x8a, 0x4e,
- 0x57, 0x58, 0x5f, 0xc9, 0x0d, 0xb6, 0xa9, 0xa3, 0xbb, 0x2e, 0xfc, 0x06,
- 0x35, 0xf2, 0x80, 0x0d, 0x3b, 0xfc, 0xf6, 0x6b, 0xc3, 0xaa, 0xad, 0xaa,
- 0x05, 0xa1, 0xcb, 0x58, 0x2b, 0xbd, 0x27, 0x1c, 0x30, 0x72, 0xfa, 0xd8,
- 0xf6, 0x91, 0xd0, 0x89, 0x3e, 0xa3, 0x6c, 0x33, 0x76, 0xa2, 0xa0, 0x24,
- 0xf4, 0xc1, 0xe5, 0x83, 0xdb, 0x7c, 0x7c, 0xd4, 0x6d, 0x41, 0x55, 0x30,
- 0xfb, 0xc7, 0x21, 0xef, 0x6a, 0xdb, 0x11, 0x3e, 0x05, 0x17, 0x84, 0x28,
- 0x8b, 0x90, 0x17, 0x75, 0xe1, 0xa6, 0x94, 0x39, 0x5d, 0x7a, 0xfe, 0xfe,
- 0x3d, 0x75, 0x50, 0xf4, 0x38, 0xdd, 0x4e, 0xd1, 0xa1, 0x54, 0x5a, 0xcd,
- 0x5d, 0xbe, 0xa9, 0x11, 0x39, 0xbb, 0x75, 0x68, 0x82, 0xdc, 0xe5, 0x33,
- 0x09, 0x5f, 0x62, 0x27, 0xc2, 0x9c, 0xb7, 0x39, 0x36, 0x57, 0xe3, 0x02,
- 0x86, 0x30, 0x9e, 0x3b, 0xe2, 0x21, 0xbb, 0x5f, 0x27, 0x25, 0xb9, 0x11,
- 0x08, 0x17, 0x29, 0xda, 0x81, 0x47, 0x65, 0x0d, 0xac, 0xac, 0xd5, 0x7b,
- 0x15, 0xc9, 0xab, 0x73, 0xcb, 0xcc, 0x5d, 0x76, 0x5c, 0xe0, 0xb2, 0xe7,
- 0xde, 0xa1, 0x07, 0x45, 0xd3, 0x02, 0xf5, 0xdd, 0x87, 0x15, 0x08, 0x2b,
- 0x95, 0xe9, 0x4a, 0x57, 0x94, 0x61, 0xdb, 0xff, 0x5d, 0xaa, 0x1c, 0x70,
- 0x37, 0xf7, 0xc9, 0x14, 0x96, 0x8c, 0x28, 0xab, 0x8a, 0xd5, 0xd5, 0xb4,
- 0x22, 0x0a, 0x04, 0xd7, 0xf5, 0x61, 0xd0, 0xd9, 0xf3, 0xd6, 0x50, 0x87,
- 0x68, 0x08, 0x7b, 0x85, 0xd4, 0x1d, 0x9b, 0xa2, 0x4b, 0x11, 0x76, 0x65,
- 0x8e, 0x81, 0xad, 0x3f, 0xe0, 0xe6, 0xe0, 0x7c, 0xae, 0x9d, 0x5c, 0xaf,
- 0xac, 0x78, 0xf0, 0xf6, 0x11, 0x45, 0x1c, 0xcb, 0xa0, 0xee, 0xa6, 0x01,
- 0x4d, 0x1c, 0x0b, 0x9f, 0x26, 0xc8, 0xfa, 0x53, 0x49, 0x2f, 0xee, 0x4d,
- 0x61, 0xb7, 0x47, 0xed, 0x9a, 0xd7, 0xd6, 0x9b, 0x6c, 0xa8, 0xea, 0x9b,
- 0xc3, 0xea, 0x4d, 0xeb, 0xfc, 0x0d, 0x6b, 0xdf, 0x8b, 0x37, 0xad, 0xfb,
- 0x37, 0xad, 0xee, 0x3b, 0xeb, 0x4d, 0x1c, 0xf4, 0x2f, 0xdf, 0x59, 0xfb,
- 0x38, 0x72, 0x31, 0xd7, 0x4a, 0xec, 0xcf, 0xef, 0x73, 0x47, 0xa4, 0xf2,
- 0xb4, 0x6d, 0xfd, 0x91, 0xb9, 0xd4, 0x6a, 0x15, 0xfa, 0xbc, 0xff, 0x30,
- 0x2e, 0xe1, 0x0b, 0xb6, 0x70, 0x5f, 0x98, 0x22, 0x82, 0x27, 0xe3, 0x89,
- 0xcf, 0xbb, 0x74, 0x8d, 0x11, 0x1e, 0xb8, 0xd8, 0xf3, 0x8e, 0xde, 0xd5,
- 0xd5, 0x4b, 0x9e, 0xc9, 0x94, 0x9d, 0xbe, 0x28, 0x23, 0xed, 0x73, 0x80,
- 0x8b, 0x7f, 0x12, 0x3d, 0xdb, 0xf1, 0x61, 0x4c, 0x09, 0x45, 0x38, 0x50,
- 0xd2, 0x42, 0x58, 0x2d, 0x82, 0xc4, 0xdd, 0x6b, 0xff, 0x65, 0xd1, 0x0c,
- 0xee, 0x1c, 0x4c, 0xd9, 0x5e, 0xd5, 0x79, 0xe1, 0xdc, 0xe9, 0xd4, 0xa2,
- 0x1b, 0xf7, 0xb1, 0x27, 0x29, 0x9a, 0x14, 0x65, 0x12, 0x14, 0x16, 0xfe,
- 0xd6, 0x5f, 0x89, 0xc7, 0x7a, 0x15, 0x37, 0xf4, 0x5b, 0x9e, 0x60, 0xb6,
- 0x54, 0x74, 0xf6, 0x3c, 0x4f, 0x3d, 0x23, 0x2e, 0xa8, 0xb5, 0x97, 0x39,
- 0x74, 0x19, 0x36, 0xf1, 0xa8, 0x71, 0x3d, 0x17, 0x1b, 0xeb, 0xea, 0x8a,
- 0xfd, 0xfb, 0x43, 0x76, 0x93, 0xed, 0x20, 0x35, 0xbb, 0x3e, 0xe9, 0xc6,
- 0x76, 0x6e, 0x25, 0xc2, 0x8c, 0x7a, 0x4f, 0x1a, 0xb2, 0xa3, 0x29, 0x58,
- 0xdc, 0x5e, 0x34, 0x4b, 0xa5, 0x9f, 0xd0, 0x6b, 0xd5, 0xf5, 0x31, 0xbf,
- 0x86, 0xcc, 0xf8, 0x28, 0x05, 0x54, 0x68, 0x72, 0xf0, 0x23, 0xa9, 0x01,
- 0x49, 0x54, 0x9c, 0x34, 0x68, 0xe7, 0xed, 0x40, 0x63, 0x6d, 0x28, 0x24,
- 0x96, 0xd1, 0x36, 0x40, 0x73, 0x78, 0x0a, 0x2c, 0x4e, 0x59, 0x38, 0x39,
- 0x18, 0x7c, 0xa6, 0x57, 0xf5, 0xed, 0x73, 0xa3, 0xb0, 0x40, 0x83, 0x58,
- 0x9f, 0xb2, 0x8f, 0x49, 0x39, 0x11, 0x66, 0x6c, 0xa4, 0x18, 0xa4, 0xca,
- 0x48, 0x04, 0x51, 0x70, 0x52, 0x28, 0x78, 0x46, 0xe8, 0xf9, 0x13, 0x42,
- 0xa7, 0x22, 0xfc, 0x7e, 0xfe, 0x8e, 0x6d, 0x3f, 0xbb, 0xce, 0x73, 0x89,
- 0x8b, 0x52, 0xd1, 0xf6, 0x63, 0x0e, 0x6e, 0xd8, 0x98, 0xaa, 0x6a, 0xd8,
- 0xb4, 0xfb, 0xc9, 0x76, 0x55, 0xfd, 0xd7, 0x1f, 0x9f, 0xfe, 0x0b, 0x00,
- 0x00, 0xff, 0xff, 0xfe, 0xac, 0xdb, 0x69, 0xf1, 0x05, 0x00, 0x00,
- },
- "conf/gitignore/C Sharp",
- )
-}
-
-func conf_gitignore_c_() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x52, 0x56,
- 0x70, 0xce, 0xcf, 0x2d, 0xc8, 0xcc, 0x49, 0x4d, 0x51, 0xf0, 0x4f, 0xca,
- 0x4a, 0x4d, 0x2e, 0x51, 0x48, 0x03, 0x72, 0x8a, 0xb9, 0xb4, 0xf4, 0x8a,
- 0x73, 0xf2, 0x81, 0x24, 0x98, 0xc8, 0xe7, 0xe2, 0x42, 0x52, 0xe7, 0x52,
- 0x99, 0x97, 0x98, 0x9b, 0x99, 0xac, 0x90, 0x93, 0x99, 0x54, 0x94, 0x58,
- 0x94, 0x09, 0x51, 0x0c, 0x52, 0x96, 0x52, 0x09, 0x14, 0x42, 0x51, 0x1a,
- 0x5c, 0x92, 0x58, 0x82, 0xa6, 0x32, 0x27, 0x31, 0x13, 0x4c, 0x02, 0x89,
- 0x44, 0x2e, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xe6, 0x21, 0x26,
- 0x7e, 0x00, 0x00, 0x00,
- },
- "conf/gitignore/C++",
- )
-}
-
-func conf_gitignore_google_go() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x3c, 0x8e,
- 0x41, 0x4b, 0xc4, 0x30, 0x10, 0x85, 0xef, 0xf3, 0x2b, 0x06, 0xf6, 0xa2,
- 0x45, 0x22, 0x0a, 0x8a, 0x57, 0x51, 0xbc, 0x7a, 0xd8, 0xa3, 0x48, 0x49,
- 0xd3, 0x69, 0x77, 0x96, 0x36, 0x13, 0x33, 0x53, 0xe9, 0xfe, 0x7b, 0xa7,
- 0xae, 0xee, 0xe1, 0xf1, 0xde, 0x4b, 0x5e, 0x3e, 0xb2, 0xc3, 0x17, 0x99,
- 0x0b, 0x4f, 0xd4, 0xe3, 0x7b, 0x77, 0xa4, 0x64, 0x38, 0x78, 0xd1, 0x1b,
- 0xdc, 0x5b, 0x34, 0x4e, 0x18, 0x73, 0x8f, 0xaf, 0xa7, 0x1c, 0x67, 0xcf,
- 0x13, 0x77, 0x8a, 0x57, 0xfb, 0x43, 0xac, 0x97, 0xb5, 0x5e, 0x43, 0x13,
- 0xc4, 0x15, 0x5d, 0x2a, 0x00, 0x3b, 0x7c, 0x93, 0xa9, 0xa7, 0xaa, 0xd0,
- 0x4a, 0x77, 0x84, 0xd6, 0x48, 0x6d, 0x3b, 0x7d, 0xae, 0xe9, 0xc0, 0xe6,
- 0x2f, 0x96, 0x4a, 0xa8, 0x85, 0x12, 0x0f, 0x4e, 0xa4, 0xd5, 0x28, 0x2b,
- 0x4b, 0xd6, 0xdb, 0x52, 0x69, 0xe0, 0x95, 0xd4, 0x39, 0x1f, 0x0f, 0x8f,
- 0x4f, 0xdf, 0x5f, 0x9f, 0xf0, 0xe7, 0x41, 0x16, 0x47, 0x34, 0x21, 0x8d,
- 0x72, 0x17, 0x46, 0x39, 0xa7, 0xfb, 0x90, 0xa0, 0x75, 0x6f, 0x7b, 0x1a,
- 0x96, 0xfc, 0x5f, 0x46, 0xb1, 0x53, 0x21, 0xdd, 0x56, 0xbf, 0x9d, 0xd6,
- 0x22, 0xd5, 0x42, 0x03, 0xe7, 0x8f, 0xcc, 0x91, 0xf3, 0x76, 0xe7, 0x08,
- 0x5a, 0xe9, 0x27, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xab, 0x59, 0x6f, 0xfb,
- 0x00, 0x00, 0x00,
- },
- "conf/gitignore/Google Go",
- )
-}
-
-func conf_gitignore_java() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x1c, 0xcb,
- 0xb1, 0x6a, 0xc3, 0x30, 0x10, 0xc6, 0xf1, 0x5d, 0x4f, 0x71, 0xe0, 0xa5,
- 0x35, 0x45, 0x82, 0x8e, 0xdd, 0xdb, 0xc1, 0x60, 0xe8, 0xd0, 0xdd, 0x5c,
- 0xe5, 0x8b, 0x25, 0xe7, 0xe4, 0x13, 0x3a, 0xc5, 0xca, 0xe3, 0x47, 0xc9,
- 0xf2, 0x1f, 0x3e, 0x7e, 0xdf, 0x68, 0x3d, 0xa3, 0xaa, 0x31, 0x03, 0xcc,
- 0xf2, 0x1f, 0x99, 0xe0, 0x4f, 0x84, 0x15, 0x2e, 0x52, 0x60, 0xc2, 0x13,
- 0xe1, 0x6d, 0xfa, 0x9c, 0xbf, 0xdf, 0x8d, 0x4d, 0x75, 0xb7, 0x35, 0x65,
- 0xf7, 0x94, 0xbf, 0xe8, 0xaf, 0xb8, 0x11, 0xfc, 0x74, 0xaf, 0x30, 0x98,
- 0xd1, 0xee, 0x58, 0x7a, 0xdb, 0xab, 0xd4, 0xdb, 0xd1, 0x19, 0x4b, 0xbd,
- 0x21, 0x43, 0x42, 0x1f, 0xe2, 0x41, 0xe0, 0x0b, 0x6a, 0x00, 0x96, 0x4d,
- 0x3f, 0x40, 0x89, 0x20, 0xd4, 0x9a, 0xbf, 0x9c, 0x6b, 0xad, 0xf5, 0xf7,
- 0x89, 0xd6, 0x4b, 0x72, 0x74, 0xb8, 0x55, 0xda, 0xc1, 0x82, 0xab, 0x0b,
- 0xc4, 0xd9, 0x51, 0x29, 0x52, 0x96, 0x20, 0x55, 0xb3, 0x54, 0x7b, 0x4f,
- 0x6c, 0x82, 0x2e, 0x7d, 0x5c, 0x72, 0x5c, 0xc7, 0x47, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xe7, 0xd6, 0xf7, 0xa4, 0xbc, 0x00, 0x00, 0x00,
- },
- "conf/gitignore/Java",
- )
-}
-
-func conf_gitignore_objective_c() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x44, 0x90,
- 0xb1, 0x4e, 0xc4, 0x30, 0x10, 0x44, 0xfb, 0xfb, 0x8a, 0x91, 0xd2, 0xe2,
- 0xa4, 0xbf, 0x86, 0x82, 0x86, 0x92, 0x8e, 0xda, 0xb2, 0xf7, 0x9c, 0x45,
- 0x89, 0x37, 0x5a, 0xaf, 0x41, 0xf7, 0xf7, 0xac, 0x13, 0x09, 0x9a, 0x28,
- 0xd2, 0x8c, 0xe7, 0x3d, 0x7b, 0xc2, 0x9b, 0x24, 0x89, 0x1f, 0x92, 0xdb,
- 0x6d, 0xba, 0x4d, 0xf8, 0x24, 0x28, 0x25, 0xd9, 0x77, 0xaa, 0x19, 0xb1,
- 0x44, 0xae, 0xcd, 0x10, 0x73, 0xe6, 0x5a, 0x60, 0x2b, 0x61, 0x14, 0x91,
- 0xd9, 0x3b, 0x26, 0xfa, 0x84, 0x09, 0x9e, 0xd2, 0x15, 0x73, 0x61, 0xe3,
- 0x52, 0x45, 0x69, 0xc6, 0xbb, 0xfc, 0xd0, 0x37, 0xa9, 0x8f, 0x79, 0x84,
- 0xb6, 0x4a, 0xdf, 0x32, 0xbe, 0x7a, 0x2e, 0x84, 0x87, 0xe8, 0xd9, 0x6f,
- 0xb4, 0x3d, 0x5e, 0xce, 0xbd, 0x43, 0xa5, 0x21, 0x3a, 0x2b, 0x49, 0xf5,
- 0x1f, 0x25, 0x38, 0xd9, 0x58, 0x2a, 0x39, 0xde, 0xee, 0x3e, 0xb2, 0x9a,
- 0x1d, 0xf7, 0x65, 0x29, 0x9d, 0x33, 0xb5, 0x39, 0x0d, 0xdb, 0xc3, 0x25,
- 0x66, 0xd1, 0xb2, 0xf4, 0xe6, 0x5e, 0xd7, 0x37, 0xfc, 0x27, 0xab, 0xed,
- 0xdb, 0x74, 0x71, 0x03, 0x87, 0x4b, 0x2b, 0x38, 0x2c, 0x8c, 0x34, 0xfc,
- 0xc9, 0x07, 0xae, 0xa1, 0xb9, 0x4c, 0x22, 0x3f, 0x5b, 0x4d, 0x65, 0x7b,
- 0x3d, 0x9f, 0x60, 0x5c, 0x71, 0xf9, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xa9,
- 0x17, 0x4f, 0x2a, 0x18, 0x01, 0x00, 0x00,
- },
- "conf/gitignore/Objective-C",
- )
-}
-
-func conf_gitignore_python() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x34, 0x8f,
- 0xb1, 0x4e, 0xc4, 0x30, 0x0c, 0x86, 0x77, 0x3f, 0x45, 0x24, 0xb6, 0x93,
- 0xce, 0x2c, 0x88, 0x17, 0x80, 0x85, 0x01, 0x89, 0x01, 0x26, 0x84, 0xaa,
- 0x34, 0xf1, 0x95, 0x40, 0x1a, 0x47, 0xb6, 0xa9, 0xda, 0xb7, 0x27, 0xe9,
- 0xf5, 0x86, 0x44, 0xf6, 0xf7, 0xff, 0x89, 0x7f, 0x9f, 0xb0, 0x6e, 0x9f,
- 0x81, 0xe3, 0x17, 0xc0, 0x9d, 0x7b, 0x72, 0xb4, 0x1a, 0x15, 0x4d, 0x5c,
- 0x14, 0x4e, 0xa8, 0xdc, 0xe1, 0x9b, 0x0f, 0xbf, 0x7e, 0xa2, 0x0e, 0x68,
- 0x9a, 0xae, 0xf7, 0x39, 0x95, 0x0b, 0x43, 0x4c, 0x6a, 0x30, 0xfe, 0xa5,
- 0x1c, 0xa1, 0x31, 0x85, 0xea, 0xc5, 0x14, 0xc6, 0x54, 0x60, 0xf1, 0x02,
- 0xba, 0xcb, 0x91, 0x16, 0xca, 0x5c, 0xcf, 0xbb, 0x01, 0x53, 0x51, 0xf3,
- 0x39, 0x53, 0xc4, 0x70, 0x99, 0x20, 0xa7, 0xb1, 0x9f, 0xc7, 0x07, 0x18,
- 0x86, 0xba, 0x05, 0x1f, 0xbe, 0x69, 0x18, 0xfa, 0xc8, 0x97, 0xc3, 0x26,
- 0x2e, 0x73, 0xff, 0x37, 0xd5, 0x73, 0x2b, 0xd0, 0x56, 0xeb, 0xea, 0x47,
- 0x49, 0xe6, 0x8c, 0xd4, 0xdc, 0xbd, 0x0b, 0xbc, 0x90, 0xb4, 0x74, 0x4e,
- 0xa8, 0x72, 0x9f, 0x8e, 0x37, 0x02, 0x68, 0xbc, 0x42, 0x61, 0xa5, 0x6e,
- 0x55, 0x5c, 0xe7, 0xdc, 0x1f, 0xbf, 0x8b, 0x2f, 0x9a, 0xbd, 0x1d, 0x2b,
- 0xce, 0xfb, 0x8a, 0xaf, 0xe2, 0x9e, 0xaf, 0x39, 0x49, 0x00, 0x67, 0xc1,
- 0x78, 0xeb, 0xf6, 0x9c, 0x58, 0x85, 0x7f, 0x28, 0x58, 0x2b, 0xb6, 0xa6,
- 0x1c, 0xdd, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0xf0, 0xe2, 0xc0,
- 0x3a, 0x01, 0x00, 0x00,
- },
- "conf/gitignore/Python",
- )
-}
-
-func conf_gitignore_ruby() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x2c, 0x8c,
- 0xbd, 0xaa, 0xc3, 0x30, 0x0c, 0x46, 0x77, 0x3d, 0x45, 0xe0, 0x6e, 0x19,
- 0xec, 0x67, 0xb8, 0x50, 0x0a, 0x5d, 0xbb, 0x75, 0x0a, 0xb2, 0xac, 0x18,
- 0x53, 0xff, 0x21, 0xa9, 0x85, 0xbe, 0x7d, 0x4d, 0xd2, 0xe1, 0x20, 0xf1,
- 0x71, 0x38, 0xab, 0x4b, 0x5c, 0x61, 0x75, 0x12, 0x08, 0x5c, 0x78, 0xb5,
- 0x58, 0x18, 0x1c, 0xf5, 0xb6, 0xe7, 0x04, 0xd4, 0xdf, 0x2c, 0x98, 0x18,
- 0x6e, 0x4d, 0x0d, 0x4b, 0xe1, 0x78, 0xcd, 0x85, 0x15, 0x4a, 0x0e, 0xfe,
- 0x54, 0xc5, 0x57, 0x6c, 0x30, 0x9e, 0x09, 0x24, 0x76, 0x02, 0x1d, 0x4c,
- 0x5e, 0x78, 0x74, 0x31, 0x05, 0x63, 0x35, 0x6f, 0x75, 0x9c, 0xcf, 0x2c,
- 0x69, 0xee, 0x6d, 0x3b, 0x86, 0x09, 0xfc, 0x2d, 0x8f, 0xff, 0xfb, 0x65,
- 0x41, 0xb1, 0xbc, 0x23, 0x4d, 0xdf, 0x7d, 0xf0, 0x88, 0x6c, 0xbf, 0x3b,
- 0xf1, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb1, 0xca, 0xf7, 0x91, 0x9e,
- 0x00, 0x00, 0x00,
- },
- "conf/gitignore/Ruby",
- )
-}
-
-func conf_license_affero_gpl() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0xc4, 0xbd,
- 0x5b, 0x73, 0xdb, 0x46, 0x96, 0x38, 0xfe, 0xde, 0x9f, 0xa2, 0x8b, 0x2f,
- 0x91, 0xaa, 0x68, 0x25, 0x4e, 0x66, 0x92, 0x9d, 0x64, 0x2a, 0x55, 0xb4,
- 0x44, 0xc7, 0xac, 0x91, 0x25, 0xad, 0x24, 0xc7, 0xe3, 0x47, 0x90, 0x68,
- 0x8a, 0x58, 0x83, 0x00, 0x17, 0x0d, 0x48, 0xe6, 0x7e, 0xfa, 0xff, 0xb9,
- 0xf6, 0x05, 0x24, 0xed, 0xfc, 0xe7, 0xe5, 0x97, 0xda, 0xad, 0xb1, 0x24,
- 0xa0, 0xfb, 0xf4, 0xe9, 0x73, 0xbf, 0xe1, 0x8f, 0x9b, 0x0f, 0x76, 0xf6,
- 0xf6, 0xed, 0xfc, 0xfe, 0xd6, 0xfe, 0x31, 0xbf, 0x99, 0xdf, 0xcf, 0xae,
- 0xed, 0xdd, 0x87, 0x37, 0xd7, 0x8b, 0x4b, 0x0b, 0xff, 0x3f, 0xbf, 0x79,
- 0x98, 0x1b, 0x7b, 0xfc, 0xbf, 0x3f, 0x5d, 0xe7, 0xab, 0xb6, 0xb1, 0x3f,
- 0x4d, 0xed, 0xeb, 0x7f, 0xd8, 0x9b, 0xf6, 0xd9, 0x6d, 0x97, 0xae, 0xb3,
- 0x3f, 0xfe, 0xf0, 0xc3, 0x2f, 0xc6, 0xd8, 0xcb, 0x76, 0xb7, 0xef, 0xaa,
- 0xa7, 0x4d, 0x6f, 0xcf, 0x2e, 0xcf, 0xe9, 0x97, 0xf6, 0x6d, 0xe7, 0x9c,
- 0x7d, 0x68, 0xd7, 0xfd, 0x4b, 0xd1, 0x39, 0xfb, 0xb6, 0x1d, 0x9a, 0xb2,
- 0xe8, 0x61, 0x85, 0xa9, 0x5d, 0x34, 0xab, 0x0b, 0xfb, 0xcf, 0x4d, 0xdf,
- 0xef, 0x7e, 0xfd, 0xfe, 0xfb, 0xb5, 0x5f, 0x5f, 0xb4, 0xdd, 0xd3, 0xf7,
- 0xbf, 0x1b, 0x3b, 0x7f, 0x76, 0xdd, 0xbe, 0x6d, 0x9c, 0xad, 0xbc, 0xdd,
- 0xb9, 0x6e, 0x5b, 0xf5, 0xbd, 0x2b, 0x6d, 0xdf, 0xda, 0x15, 0xac, 0x6e,
- 0x8b, 0xa6, 0xb4, 0x65, 0xe5, 0xfb, 0xae, 0x5a, 0x0e, 0xbd, 0xb3, 0xf0,
- 0xec, 0x12, 0xd6, 0xdb, 0xe2, 0x1f, 0x2b, 0xe7, 0x8d, 0x6d, 0xd7, 0xb6,
- 0xdf, 0xc0, 0x9b, 0x75, 0xb5, 0x72, 0x8d, 0x77, 0xb6, 0x6c, 0x57, 0xc3,
- 0xd6, 0x35, 0xfd, 0xd4, 0xc2, 0xf3, 0x76, 0xb5, 0x29, 0x9a, 0xa7, 0xaa,
- 0x79, 0xb2, 0x55, 0x8f, 0xcb, 0x37, 0x6d, 0x6f, 0x8b, 0xba, 0x6e, 0x5f,
- 0x5c, 0x79, 0x61, 0x4e, 0x1d, 0x99, 0xfe, 0xbb, 0xeb, 0x5c, 0xb1, 0x5d,
- 0xd6, 0x0e, 0x9f, 0x7a, 0xdc, 0x38, 0x4b, 0x08, 0x5c, 0xaf, 0x5d, 0xd7,
- 0xda, 0x3f, 0x5c, 0xe3, 0xba, 0xa2, 0xb6, 0x77, 0xc3, 0x12, 0x36, 0xb5,
- 0xd7, 0xb2, 0x31, 0x2c, 0x5f, 0xd8, 0x35, 0x9c, 0x7e, 0x4a, 0x80, 0xd7,
- 0x6e, 0xdd, 0x07, 0xa0, 0xd6, 0x6d, 0x67, 0xbc, 0xe2, 0x04, 0x4f, 0xd4,
- 0xf6, 0x1b, 0xc0, 0xe2, 0xe7, 0xaa, 0x29, 0x3d, 0x9e, 0xe0, 0xa5, 0xed,
- 0x3e, 0xfb, 0xa9, 0xf5, 0x3b, 0xb7, 0xaa, 0xd6, 0xd5, 0x0a, 0x40, 0xdc,
- 0xdb, 0xd2, 0xf9, 0xea, 0xa9, 0x61, 0x4c, 0xc0, 0x22, 0x43, 0xe7, 0xcc,
- 0xaa, 0x6d, 0x01, 0x41, 0x84, 0x4e, 0xfb, 0x52, 0xf5, 0x1b, 0x38, 0xb9,
- 0x83, 0xcd, 0xb6, 0xdb, 0xa1, 0xa9, 0xfa, 0xbd, 0xad, 0x1a, 0xfe, 0x45,
- 0x01, 0x3b, 0xc2, 0xa2, 0x8d, 0xeb, 0x71, 0x5d, 0xeb, 0x5d, 0x07, 0x58,
- 0xb3, 0xba, 0xff, 0x85, 0x1e, 0x49, 0x80, 0xf3, 0x08, 0x9d, 0xdd, 0xb6,
- 0xbe, 0xb7, 0x47, 0x40, 0xdc, 0x75, 0xc5, 0xaa, 0x47, 0x88, 0x18, 0x46,
- 0x8b, 0x7f, 0x55, 0xc8, 0x0c, 0x40, 0xd6, 0x17, 0x9f, 0xe1, 0xf1, 0x97,
- 0x62, 0x6f, 0xf7, 0xed, 0xd0, 0xd1, 0xf9, 0xcb, 0x76, 0x8b, 0x30, 0xfb,
- 0x8d, 0xae, 0x44, 0x97, 0xe0, 0x08, 0x36, 0x5a, 0xe4, 0xc2, 0xda, 0x37,
- 0x7b, 0x80, 0xbb, 0xe9, 0xbb, 0xc2, 0xf7, 0x53, 0x83, 0x2f, 0x1e, 0x47,
- 0x2a, 0xef, 0x57, 0x35, 0xbd, 0x6b, 0x4a, 0xc6, 0xc4, 0xd3, 0x50, 0x74,
- 0x05, 0xfc, 0xec, 0xc6, 0xfb, 0x99, 0x83, 0xfd, 0x00, 0x8b, 0x48, 0x2e,
- 0x48, 0xbe, 0x84, 0xe4, 0x02, 0x0e, 0xd3, 0x3e, 0x75, 0xc5, 0xf6, 0xd5,
- 0x2b, 0x58, 0x68, 0x8b, 0x80, 0x23, 0x56, 0x91, 0x34, 0x3a, 0xb7, 0x2d,
- 0x2a, 0x78, 0x0a, 0x97, 0x8b, 0x17, 0x85, 0x78, 0xc1, 0x45, 0xaa, 0xde,
- 0xdb, 0x01, 0xb0, 0xe8, 0x09, 0x75, 0x1f, 0x37, 0x0e, 0xb0, 0xef, 0xf0,
- 0xb2, 0x8a, 0xcf, 0xb8, 0x2e, 0xbe, 0x14, 0x50, 0x37, 0xc5, 0x3f, 0xe1,
- 0xcb, 0x9d, 0x03, 0x62, 0xe9, 0x90, 0xf4, 0x60, 0x33, 0x01, 0x73, 0x8a,
- 0x04, 0x68, 0x76, 0x1d, 0x1c, 0x0e, 0x70, 0x70, 0xfb, 0x8d, 0x63, 0xa7,
- 0x04, 0x10, 0xa1, 0xed, 0x37, 0x45, 0x8f, 0x67, 0x37, 0x9b, 0xe2, 0x99,
- 0x71, 0x9a, 0xe0, 0x3c, 0x61, 0x14, 0xe6, 0x8f, 0x03, 0xf8, 0xec, 0x99,
- 0x60, 0xa8, 0x7b, 0x62, 0xb2, 0x84, 0x15, 0xb6, 0xb6, 0x5a, 0xe3, 0x92,
- 0x40, 0x53, 0x7e, 0x73, 0x3e, 0x0d, 0x5b, 0xc0, 0x19, 0x56, 0xae, 0x7a,
- 0xc6, 0x97, 0x87, 0x6e, 0x85, 0x4b, 0x96, 0x40, 0x58, 0x1d, 0x10, 0x58,
- 0x63, 0x9f, 0x5c, 0x4f, 0x3c, 0x45, 0x2f, 0x9a, 0x17, 0xb8, 0x12, 0xf8,
- 0x31, 0x79, 0x15, 0x9f, 0x49, 0xee, 0x3d, 0x6c, 0x0f, 0xaf, 0x03, 0x2a,
- 0x2d, 0xc0, 0xb6, 0x62, 0xe8, 0x70, 0x91, 0x06, 0x68, 0xf5, 0xc5, 0x10,
- 0x9c, 0x72, 0x45, 0xc0, 0x0c, 0x08, 0x67, 0x58, 0xee, 0x73, 0xd3, 0xbe,
- 0x84, 0x75, 0xcb, 0x16, 0xd7, 0xf4, 0xb8, 0x32, 0xe0, 0x97, 0x6f, 0xe5,
- 0xca, 0x3d, 0xbb, 0x1a, 0xb9, 0xc3, 0xf3, 0x4b, 0xb8, 0xc9, 0xd7, 0xe8,
- 0x0a, 0xf6, 0xe9, 0xdd, 0xaa, 0x67, 0x2a, 0x22, 0x11, 0xe6, 0x0d, 0xb3,
- 0xd4, 0x0b, 0x90, 0x6e, 0xef, 0x76, 0xfe, 0x57, 0x7b, 0xf6, 0xfa, 0xdc,
- 0x16, 0x1e, 0x2e, 0xbe, 0x27, 0x8e, 0x66, 0x41, 0xd7, 0x36, 0xd9, 0x81,
- 0x18, 0xce, 0xb3, 0x1f, 0xcf, 0xe1, 0x2c, 0x70, 0xe1, 0x06, 0x61, 0x24,
- 0x79, 0xa4, 0x62, 0xe1, 0x65, 0x53, 0xad, 0x36, 0xf6, 0x09, 0xd0, 0xe8,
- 0xe9, 0x00, 0xb5, 0x7b, 0x02, 0x70, 0x48, 0xce, 0x79, 0x92, 0xac, 0x22,
- 0xe8, 0xa6, 0xc9, 0xe5, 0x19, 0x58, 0xf3, 0x7b, 0x62, 0xca, 0xb2, 0x5a,
- 0xef, 0xb3, 0xfd, 0xe8, 0xb0, 0x33, 0xe0, 0x69, 0x60, 0x9f, 0xb2, 0xe8,
- 0xf6, 0x76, 0x09, 0x07, 0x5c, 0x03, 0x12, 0x01, 0x95, 0x25, 0x90, 0x5c,
- 0x53, 0x22, 0xc9, 0x21, 0xd5, 0x12, 0xc5, 0x7e, 0x17, 0xa8, 0xa3, 0x62,
- 0xc4, 0x98, 0x6a, 0x0b, 0x47, 0x07, 0x29, 0x0e, 0x22, 0xd2, 0x03, 0x59,
- 0x95, 0xc8, 0x5e, 0xf0, 0x7c, 0xef, 0xba, 0xa6, 0x60, 0xf9, 0x1a, 0x18,
- 0x06, 0xf7, 0x95, 0xfb, 0x98, 0xe2, 0x4d, 0xc3, 0xcf, 0x7b, 0xa3, 0x34,
- 0xf1, 0x52, 0x01, 0x7d, 0xee, 0x40, 0x4a, 0x96, 0xb8, 0x13, 0x48, 0x5b,
- 0x80, 0x68, 0x0b, 0xa4, 0xff, 0x5c, 0x54, 0x75, 0x01, 0x82, 0x93, 0xb8,
- 0x87, 0x65, 0x48, 0x99, 0xdc, 0x4d, 0x6b, 0xaa, 0x66, 0xd5, 0x76, 0xbb,
- 0x16, 0xc4, 0x18, 0x32, 0xc1, 0xfb, 0xa2, 0xd9, 0xa7, 0x0f, 0x1c, 0xd0,
- 0x2b, 0xfe, 0xff, 0xc6, 0x15, 0x1d, 0x88, 0x00, 0x60, 0x05, 0x40, 0x8c,
- 0x71, 0xb0, 0xc0, 0xd0, 0x15, 0x4f, 0xf0, 0xe3, 0x92, 0x91, 0xd3, 0x39,
- 0x3f, 0xd4, 0x3d, 0x1e, 0x3c, 0x91, 0x90, 0xb0, 0xf8, 0x3b, 0x10, 0xf4,
- 0x70, 0xa0, 0xe9, 0x48, 0x32, 0x46, 0x0e, 0x07, 0xc8, 0x4b, 0xbc, 0xd1,
- 0x5c, 0x54, 0xfa, 0x29, 0x5f, 0x21, 0x2f, 0x0b, 0x48, 0xda, 0xdb, 0x35,
- 0x9c, 0x8a, 0x6f, 0x0a, 0xcf, 0xb8, 0x6c, 0x87, 0xfe, 0xc2, 0xa8, 0x5a,
- 0x38, 0xa1, 0x0f, 0x58, 0x95, 0x21, 0x8e, 0x3f, 0xd3, 0x95, 0xf0, 0x6d,
- 0x56, 0xb0, 0xa1, 0xe0, 0x98, 0x0e, 0x53, 0xbb, 0x9e, 0x00, 0x27, 0x5c,
- 0xf3, 0x02, 0xc5, 0x0a, 0x58, 0xc3, 0x23, 0x63, 0xe0, 0x33, 0x2a, 0xbe,
- 0x91, 0x38, 0x61, 0x5b, 0x8b, 0x07, 0x02, 0xc8, 0x6a, 0x57, 0x78, 0xd6,
- 0x6b, 0xde, 0xa4, 0xec, 0xd9, 0xb7, 0xc9, 0x52, 0x17, 0xff, 0xbf, 0xb4,
- 0x57, 0x90, 0x37, 0x99, 0x1a, 0x82, 0x1b, 0x63, 0xed, 0x43, 0xe4, 0x43,
- 0xa8, 0xf4, 0x03, 0x50, 0x34, 0xe2, 0x92, 0x10, 0xe5, 0xe2, 0xc1, 0x52,
- 0x40, 0x98, 0x1e, 0x7c, 0x24, 0x08, 0x23, 0xa0, 0x05, 0x7d, 0x05, 0x17,
- 0xb4, 0x40, 0xd1, 0xfb, 0xbf, 0x43, 0x05, 0x98, 0xa6, 0xbf, 0xf1, 0xe5,
- 0x21, 0xe1, 0xa0, 0xb8, 0x1e, 0x29, 0x30, 0x80, 0x04, 0x49, 0xb7, 0x2a,
- 0x55, 0xa4, 0x24, 0x42, 0x69, 0x9d, 0x03, 0xa2, 0x18, 0xee, 0x86, 0xa6,
- 0x11, 0xec, 0x76, 0x8a, 0x1b, 0x43, 0x8c, 0xc1, 0xaf, 0x80, 0xa0, 0xe0,
- 0xc5, 0x2f, 0x08, 0x4f, 0x20, 0xb3, 0x5b, 0x64, 0x69, 0xb9, 0x88, 0x81,
- 0xf5, 0xe8, 0xe1, 0xcd, 0x4d, 0xe1, 0x66, 0x4c, 0x21, 0x8f, 0x01, 0x8e,
- 0xf8, 0xc6, 0x2a, 0xa4, 0x7a, 0x5e, 0x6e, 0x2a, 0x0c, 0x7f, 0x78, 0xab,
- 0x82, 0x04, 0x06, 0xde, 0x7c, 0x0d, 0x78, 0xe6, 0xf4, 0xc6, 0xb6, 0x75,
- 0x09, 0x87, 0x17, 0x65, 0x0d, 0xb6, 0x05, 0xdc, 0x0a, 0xea, 0x04, 0x78,
- 0xe3, 0xeb, 0x37, 0x8a, 0xd4, 0x45, 0x7b, 0xfb, 0x0d, 0x73, 0x0a, 0x3f,
- 0x0e, 0x0a, 0xaa, 0xf0, 0x99, 0x6e, 0x01, 0xc8, 0xda, 0xed, 0x0e, 0x9f,
- 0xb3, 0xbe, 0xda, 0xc2, 0x65, 0x75, 0xf6, 0xa9, 0x2d, 0x6a, 0x4f, 0x38,
- 0x01, 0xba, 0xa8, 0x3c, 0x9c, 0x15, 0x60, 0x83, 0xb7, 0x41, 0x68, 0x44,
- 0x48, 0xc8, 0x98, 0x0a, 0xa8, 0x96, 0x53, 0x28, 0x4c, 0x77, 0xd7, 0x6c,
- 0x80, 0xc9, 0xcf, 0x9b, 0xc2, 0x1b, 0x26, 0x5a, 0x64, 0x62, 0x14, 0xf7,
- 0xa7, 0x5f, 0x14, 0x91, 0xa9, 0xfc, 0x03, 0xaf, 0xd1, 0x8e, 0x78, 0x8f,
- 0x60, 0x4c, 0x3a, 0x54, 0x59, 0xd1, 0xde, 0x0b, 0x24, 0x0e, 0xa2, 0x68,
- 0x55, 0xa1, 0x4e, 0x80, 0xd7, 0x3c, 0x9b, 0x01, 0x20, 0x21, 0xab, 0x9e,
- 0x84, 0x19, 0xca, 0x22, 0x14, 0xb2, 0xb0, 0x46, 0x22, 0x67, 0x95, 0x07,
- 0x19, 0xf3, 0x2b, 0xb6, 0xab, 0xd6, 0x2d, 0xda, 0x87, 0xa7, 0xad, 0xc3,
- 0xc7, 0xf9, 0xfd, 0xfb, 0x07, 0x3b, 0xbb, 0xb9, 0xb2, 0x97, 0xb7, 0x37,
- 0x57, 0x8b, 0xc7, 0xc5, 0xed, 0xcd, 0x03, 0x3e, 0xfc, 0xc3, 0x05, 0xe8,
- 0xa0, 0x75, 0xd5, 0xf0, 0x8e, 0xf4, 0xfe, 0xe4, 0x31, 0x51, 0x04, 0x13,
- 0xb6, 0x08, 0x88, 0x02, 0xf4, 0xe8, 0x3f, 0xe9, 0xe1, 0xbf, 0xc9, 0x9f,
- 0xbc, 0x5e, 0x30, 0xb7, 0x27, 0x20, 0xb1, 0x3d, 0x58, 0x05, 0xae, 0x80,
- 0xc3, 0x05, 0xdd, 0xf4, 0xaa, 0xae, 0xc0, 0x4a, 0xa8, 0x8b, 0x17, 0xd1,
- 0x81, 0xc5, 0x6e, 0x47, 0x0c, 0x3c, 0xb2, 0x36, 0x8d, 0x5a, 0x9b, 0xc8,
- 0xc6, 0x40, 0x0b, 0xde, 0x6d, 0x2b, 0xc4, 0xd5, 0xb0, 0x42, 0xce, 0xdb,
- 0x16, 0xfe, 0x73, 0x00, 0xdf, 0x81, 0x1d, 0x4c, 0xf2, 0x3f, 0x85, 0x1e,
- 0x25, 0x76, 0xd8, 0x93, 0x44, 0x3d, 0x71, 0xa9, 0x5c, 0x48, 0xc9, 0x97,
- 0x44, 0x12, 0xd4, 0x28, 0xf4, 0xd6, 0xce, 0x0b, 0xd8, 0x4c, 0x1e, 0x61,
- 0x5b, 0xb9, 0x2c, 0x81, 0xeb, 0x89, 0x1c, 0xbc, 0x9d, 0x80, 0x66, 0x9c,
- 0xc0, 0x53, 0x13, 0x79, 0xc1, 0xf9, 0x09, 0xdd, 0xcc, 0x04, 0x2f, 0x15,
- 0x6c, 0x05, 0xd0, 0x55, 0x13, 0x92, 0xc3, 0x4b, 0x54, 0x57, 0x65, 0x05,
- 0x42, 0x60, 0x00, 0x0c, 0xa0, 0x35, 0x01, 0x4e, 0x44, 0xd1, 0x54, 0xff,
- 0x57, 0x44, 0xb4, 0x3f, 0xb6, 0x76, 0xc2, 0x9a, 0x13, 0x16, 0x61, 0xd8,
- 0x18, 0x51, 0xea, 0x52, 0xac, 0x3b, 0xd0, 0x87, 0x68, 0xdb, 0x95, 0xc5,
- 0x8e, 0xfc, 0x01, 0xfc, 0x61, 0x07, 0x2a, 0x46, 0xaf, 0x03, 0xdf, 0x31,
- 0xa8, 0x16, 0x41, 0xee, 0xfb, 0x0d, 0x09, 0x12, 0x92, 0x52, 0xac, 0x61,
- 0xd4, 0x12, 0x88, 0x3a, 0x7c, 0x2a, 0x18, 0x06, 0xac, 0xb3, 0xa2, 0x11,
- 0x99, 0x8f, 0xc2, 0xa3, 0x31, 0xee, 0x0b, 0x98, 0xd0, 0xf4, 0x1e, 0x4b,
- 0x99, 0x44, 0x5d, 0x11, 0x70, 0x80, 0x0c, 0x61, 0xea, 0x42, 0x00, 0x4f,
- 0xa4, 0xc0, 0x44, 0x60, 0x32, 0xa0, 0x02, 0xeb, 0x0a, 0xf5, 0x00, 0xbe,
- 0x82, 0xc0, 0xf3, 0xbf, 0x26, 0xcb, 0x82, 0x75, 0xd8, 0x84, 0x36, 0x4e,
- 0x9f, 0x12, 0x53, 0x61, 0xb2, 0x02, 0x75, 0xdf, 0xc1, 0x33, 0xf8, 0xbb,
- 0x89, 0xa0, 0xc2, 0x55, 0x02, 0x30, 0xe8, 0xc0, 0x26, 0xec, 0x29, 0x97,
- 0x9d, 0x2c, 0x4f, 0xab, 0x1b, 0xb1, 0x79, 0xe4, 0xcf, 0x01, 0xc9, 0x20,
- 0x8d, 0x77, 0xc5, 0x13, 0xe8, 0xf1, 0x43, 0x3c, 0x97, 0x44, 0x26, 0x64,
- 0x9f, 0xb1, 0xa7, 0x02, 0xda, 0x8c, 0xf5, 0x87, 0xe8, 0x31, 0x93, 0x62,
- 0xef, 0xa5, 0x1d, 0xea, 0x92, 0x6d, 0x5c, 0x34, 0x91, 0x4a, 0xd0, 0x07,
- 0xab, 0x1e, 0x48, 0x17, 0xe0, 0x50, 0x43, 0xa7, 0x82, 0x1f, 0xeb, 0x4a,
- 0x0d, 0x0b, 0xb8, 0x9c, 0x35, 0xde, 0x06, 0x99, 0x31, 0x42, 0x70, 0x48,
- 0xed, 0xc0, 0xc4, 0xf8, 0x44, 0xbc, 0x23, 0x60, 0x86, 0xa9, 0x75, 0x5f,
- 0x56, 0x0e, 0x2e, 0xda, 0x7d, 0x71, 0xab, 0xa1, 0x17, 0x67, 0x10, 0x59,
- 0xdf, 0xa0, 0xdc, 0x03, 0x73, 0x0b, 0x89, 0x48, 0x6c, 0x2d, 0xd6, 0xd4,
- 0x60, 0xa1, 0x3f, 0x17, 0x6c, 0x43, 0xe3, 0x9d, 0xdd, 0xc9, 0x39, 0x91,
- 0x10, 0xc0, 0x7a, 0xa9, 0x07, 0x90, 0x9e, 0x41, 0x9c, 0x98, 0x4c, 0x9c,
- 0x9c, 0xd1, 0x61, 0xdb, 0xa8, 0xae, 0x53, 0xd9, 0x02, 0xa6, 0xb5, 0x1a,
- 0x03, 0xc1, 0x4a, 0x12, 0x9d, 0xc4, 0x4a, 0x82, 0x8d, 0x49, 0xd4, 0xb0,
- 0x68, 0x66, 0x80, 0x95, 0x03, 0x1e, 0x12, 0x19, 0xf1, 0x74, 0x59, 0xe8,
- 0x88, 0x3d, 0x83, 0x78, 0x41, 0xa5, 0xea, 0xc1, 0xcd, 0xa8, 0xeb, 0x70,
- 0x13, 0x80, 0xa3, 0x67, 0x37, 0x26, 0x77, 0xe4, 0x53, 0xe4, 0x79, 0xa4,
- 0xa0, 0x5d, 0x72, 0x04, 0x92, 0x0d, 0xae, 0xc1, 0xed, 0x65, 0x69, 0x83,
- 0xc4, 0x8f, 0xeb, 0xaa, 0xa7, 0xd1, 0x76, 0xc1, 0xf6, 0x67, 0x3f, 0x02,
- 0x2d, 0x35, 0x27, 0xae, 0x18, 0x79, 0x84, 0xea, 0x81, 0x16, 0x64, 0x67,
- 0xc2, 0x9a, 0x5d, 0x3b, 0x3c, 0x6d, 0x40, 0x51, 0x04, 0x9c, 0x8a, 0xf6,
- 0xe6, 0x1b, 0x07, 0x65, 0x61, 0xc1, 0xdb, 0x6b, 0xfc, 0xda, 0x89, 0x72,
- 0x67, 0x9b, 0x57, 0x7c, 0x72, 0x86, 0x1f, 0x30, 0xa3, 0x4a, 0x2f, 0xec,
- 0xf3, 0xec, 0x78, 0x03, 0xfa, 0xc5, 0xba, 0x00, 0x85, 0x0f, 0xf8, 0xde,
- 0xd5, 0xc5, 0x1e, 0x84, 0xc6, 0x6c, 0x87, 0xc7, 0xea, 0x2a, 0xbc, 0xaa,
- 0x6b, 0x32, 0xab, 0x6f, 0x5a, 0xf0, 0x55, 0x41, 0x78, 0xa8, 0xad, 0xe1,
- 0xbe, 0xf4, 0x48, 0x20, 0x74, 0x62, 0x72, 0x34, 0xe4, 0xf2, 0x0a, 0xde,
- 0xb1, 0x41, 0xc9, 0x42, 0x38, 0x87, 0x85, 0xb6, 0x55, 0x03, 0x3f, 0x01,
- 0x99, 0x3d, 0x57, 0xa4, 0xca, 0xcd, 0xda, 0x15, 0x7d, 0xf0, 0xb8, 0xd0,
- 0x17, 0x08, 0x3b, 0x03, 0x97, 0x17, 0xc9, 0xde, 0x91, 0xdc, 0x1a, 0xda,
- 0x3f, 0xf8, 0x04, 0xa6, 0x87, 0x4b, 0x62, 0x2b, 0x40, 0xb0, 0x54, 0xf4,
- 0x62, 0x8b, 0xd0, 0xc1, 0x41, 0x15, 0x77, 0xe8, 0xcd, 0xee, 0x49, 0x41,
- 0xa9, 0xe4, 0xb1, 0x67, 0x42, 0xb0, 0x42, 0x1b, 0xe9, 0x21, 0xe4, 0x85,
- 0x4a, 0x5c, 0x44, 0xb1, 0x87, 0x4a, 0x75, 0xda, 0x54, 0xc0, 0x7a, 0x12,
- 0x96, 0x8c, 0x55, 0x5a, 0x83, 0xd6, 0x8d, 0x82, 0x59, 0xd5, 0x0a, 0x43,
- 0xba, 0x01, 0xdf, 0x0a, 0xb5, 0x52, 0x05, 0x5a, 0x99, 0x2f, 0x26, 0x44,
- 0x55, 0xa2, 0x00, 0x5f, 0xac, 0xd1, 0x55, 0x4c, 0xee, 0x01, 0x14, 0xae,
- 0x27, 0x27, 0xa2, 0x80, 0x6d, 0x3d, 0xc9, 0x4e, 0x3a, 0x24, 0xda, 0x77,
- 0x05, 0x69, 0x1a, 0xb8, 0xe9, 0x1d, 0x89, 0xe5, 0xa8, 0x6b, 0x0a, 0x03,
- 0x1c, 0x3b, 0x4c, 0xd9, 0x17, 0x67, 0x8c, 0xc3, 0xc5, 0xa0, 0x07, 0xca,
- 0x22, 0x86, 0x56, 0xda, 0x3a, 0xd7, 0x7b, 0xde, 0x7f, 0xd5, 0xc1, 0x5f,
- 0x3b, 0xb5, 0x86, 0x5e, 0x5f, 0xd8, 0x07, 0xb6, 0xfa, 0x2e, 0xc1, 0x70,
- 0x0a, 0xaa, 0x7f, 0x92, 0x98, 0x82, 0x13, 0xf6, 0xda, 0x33, 0x71, 0xc4,
- 0xd6, 0x01, 0xba, 0xe3, 0x20, 0xe3, 0xe0, 0xcf, 0xdb, 0x4c, 0xce, 0x53,
- 0xf4, 0x83, 0xd9, 0x32, 0x65, 0x56, 0x62, 0x86, 0xaa, 0x47, 0xa5, 0x74,
- 0xbb, 0xfc, 0x1f, 0x47, 0x12, 0x1c, 0x97, 0x8f, 0xbc, 0xd5, 0xb4, 0xcd,
- 0x2b, 0xb1, 0xe3, 0x74, 0xd1, 0x22, 0x13, 0xbc, 0x0f, 0x7d, 0x81, 0xa2,
- 0xab, 0xb4, 0x0b, 0x45, 0x5a, 0x7c, 0x3d, 0x41, 0x24, 0xf3, 0x23, 0x0b,
- 0xe4, 0x8a, 0xfe, 0x06, 0xae, 0x64, 0xb5, 0xaa, 0x8a, 0xda, 0x78, 0x5d,
- 0xa1, 0x44, 0xd3, 0x82, 0xcd, 0xb8, 0x02, 0x59, 0xb3, 0x7d, 0x02, 0x9d,
- 0x87, 0x16, 0xb7, 0x3c, 0xe0, 0xed, 0xb2, 0x2d, 0x81, 0x9f, 0xda, 0x43,
- 0x67, 0x27, 0x6c, 0xe4, 0xd5, 0xb0, 0x67, 0x2c, 0xe0, 0x1d, 0x20, 0xdb,
- 0xaf, 0x06, 0xb4, 0xf8, 0xc4, 0xcf, 0xdb, 0x22, 0x1a, 0x6a, 0x70, 0xdb,
- 0x07, 0xf0, 0xaf, 0xd0, 0xcc, 0x75, 0xe2, 0x35, 0x7a, 0x72, 0xf8, 0x80,
- 0x3b, 0xc8, 0x65, 0x2a, 0xb6, 0x2d, 0x3c, 0x97, 0xb8, 0x6d, 0x78, 0x6c,
- 0x92, 0xac, 0x22, 0x5e, 0x74, 0x89, 0x78, 0x47, 0x0f, 0x7b, 0x8f, 0xf7,
- 0x7c, 0x5d, 0x2d, 0xbb, 0x02, 0x85, 0xda, 0x84, 0xb5, 0xa3, 0x48, 0xe5,
- 0x68, 0x46, 0x08, 0x8f, 0x06, 0xf5, 0x21, 0xba, 0xd5, 0x04, 0xdd, 0x4a,
- 0x4f, 0x21, 0x29, 0x81, 0x9d, 0xd8, 0xd6, 0x4e, 0x28, 0xff, 0xac, 0x38,
- 0x47, 0xe4, 0xc9, 0xdb, 0xa5, 0x22, 0xa1, 0x81, 0x8b, 0x01, 0xb9, 0x20,
- 0xf7, 0x03, 0x72, 0x6e, 0xf5, 0xb9, 0x78, 0x62, 0x21, 0xff, 0xbe, 0xf8,
- 0x1f, 0x40, 0xc2, 0x25, 0x88, 0xab, 0xb6, 0x09, 0xf1, 0x42, 0x36, 0x3d,
- 0x45, 0x2a, 0x45, 0x93, 0x00, 0x36, 0xa0, 0xc7, 0x4d, 0xf2, 0x38, 0xf1,
- 0xf8, 0xf2, 0x9c, 0x2d, 0x7e, 0xa0, 0xf6, 0x86, 0x6d, 0x2d, 0x16, 0xac,
- 0xea, 0x3b, 0x04, 0x80, 0x25, 0x5c, 0x07, 0xa8, 0x3c, 0xd8, 0x17, 0x59,
- 0x1f, 0x48, 0x0d, 0x4c, 0x70, 0x56, 0x67, 0x85, 0x3d, 0x24, 0x1c, 0xba,
- 0x30, 0x06, 0x0e, 0x2c, 0x8a, 0xf0, 0xac, 0xe8, 0x24, 0x7f, 0xa0, 0x50,
- 0xd4, 0xeb, 0x20, 0x5d, 0x12, 0xfd, 0x24, 0xc4, 0x03, 0x50, 0xf4, 0xcc,
- 0x4c, 0x46, 0x50, 0x4c, 0x84, 0x6c, 0x90, 0xe5, 0x5a, 0xd8, 0xf4, 0x0b,
- 0xc0, 0x25, 0xa4, 0x0a, 0xcc, 0x81, 0x8f, 0xa2, 0xad, 0x06, 0x82, 0x07,
- 0x90, 0xb9, 0xd2, 0x97, 0xcc, 0xd9, 0x67, 0xd7, 0x35, 0xae, 0x46, 0x11,
- 0xdf, 0x94, 0x20, 0x44, 0x3c, 0xdd, 0x31, 0xa3, 0x06, 0xcc, 0x53, 0xd0,
- 0x78, 0x8a, 0x03, 0x75, 0x29, 0xc5, 0xc3, 0xc3, 0x1b, 0xe0, 0x87, 0xcd,
- 0x59, 0x85, 0x64, 0xb0, 0x3f, 0x47, 0x8d, 0xcc, 0x07, 0x64, 0xc1, 0x9d,
- 0x53, 0x05, 0x38, 0x72, 0x7e, 0xca, 0x76, 0x09, 0x6e, 0x5f, 0xd5, 0xae,
- 0x63, 0x4a, 0x64, 0xa7, 0x10, 0x6c, 0xd7, 0x18, 0x5f, 0xe4, 0xe7, 0x80,
- 0x8b, 0x22, 0xdb, 0x32, 0xb7, 0x81, 0x10, 0xe8, 0xe3, 0x7b, 0xb8, 0x26,
- 0x32, 0x78, 0xa0, 0xd0, 0xcb, 0x16, 0x04, 0x84, 0xdf, 0xb5, 0x1c, 0x42,
- 0x61, 0x41, 0x93, 0x89, 0x93, 0x2a, 0x5f, 0x93, 0x88, 0x4a, 0x90, 0x54,
- 0xd7, 0x66, 0xec, 0x93, 0x36, 0xce, 0x69, 0xcc, 0x92, 0x4c, 0xfa, 0xde,
- 0x21, 0x8e, 0x81, 0x61, 0xeb, 0x5a, 0x88, 0x67, 0xcd, 0x70, 0xc6, 0xb3,
- 0x92, 0x98, 0x3e, 0x27, 0xc0, 0xc8, 0x1b, 0x4e, 0x36, 0xa3, 0x68, 0x58,
- 0x9b, 0x46, 0x84, 0xf8, 0xa8, 0x4c, 0xf0, 0x84, 0x4f, 0x90, 0x95, 0xbb,
- 0x9e, 0x42, 0x2c, 0x14, 0x5a, 0x6d, 0x6b, 0x78, 0xac, 0x45, 0x47, 0x30,
- 0xd8, 0x0d, 0x59, 0x48, 0xa4, 0x07, 0x23, 0xcd, 0x31, 0xa1, 0x2b, 0xcf,
- 0xe9, 0xb2, 0xdf, 0x79, 0x33, 0x66, 0x57, 0x42, 0x2a, 0x1f, 0xa4, 0x7e,
- 0xb5, 0x1b, 0xba, 0x1d, 0xae, 0xdc, 0xb7, 0x2d, 0x1b, 0xe1, 0xf2, 0x07,
- 0x74, 0x85, 0x63, 0xfc, 0x07, 0x63, 0xa9, 0x1a, 0xce, 0x53, 0xda, 0xd5,
- 0x98, 0x4b, 0x62, 0x74, 0x02, 0x56, 0x81, 0x26, 0x10, 0x99, 0xec, 0xa9,
- 0xe7, 0x20, 0x23, 0x57, 0x9a, 0xf8, 0x72, 0xce, 0x96, 0x0c, 0x2d, 0x9c,
- 0xea, 0x2d, 0x12, 0xe8, 0x97, 0x02, 0xd9, 0x62, 0x6a, 0x8f, 0xdd, 0xa3,
- 0x09, 0xaa, 0x3f, 0x31, 0x24, 0x82, 0xbb, 0x66, 0xd7, 0x55, 0x4d, 0x56,
- 0x95, 0x6f, 0x57, 0xa8, 0xd1, 0x4b, 0x66, 0x57, 0xb9, 0x4d, 0xfe, 0xa3,
- 0xc4, 0x4a, 0x05, 0xed, 0x1c, 0x9c, 0x74, 0x63, 0xe6, 0xe2, 0xa0, 0x77,
- 0x09, 0x6a, 0x4c, 0xd0, 0xc6, 0xe9, 0x8b, 0x7d, 0x53, 0x6c, 0x39, 0x9c,
- 0x62, 0xea, 0xaa, 0xf9, 0x8c, 0x72, 0x7b, 0x58, 0x06, 0xd4, 0xa8, 0x55,
- 0x10, 0xbc, 0x81, 0x93, 0x69, 0x00, 0x89, 0x95, 0x4c, 0x8d, 0xaa, 0xd3,
- 0x25, 0x06, 0xfd, 0xfb, 0x6a, 0x8b, 0x56, 0x48, 0x59, 0xf4, 0x85, 0x06,
- 0x57, 0xc4, 0x97, 0x25, 0xaf, 0x97, 0x49, 0x61, 0x0d, 0x4e, 0x2d, 0x78,
- 0x4f, 0xfd, 0x8b, 0x73, 0x0d, 0x23, 0xd9, 0xa4, 0x30, 0x24, 0x01, 0x7f,
- 0xc0, 0xae, 0xcf, 0xd0, 0xab, 0x0c, 0x72, 0x0c, 0xaf, 0x44, 0xe5, 0x19,
- 0x0d, 0x05, 0xb3, 0x5f, 0xc3, 0xb0, 0x9d, 0x37, 0x18, 0xb4, 0xed, 0x9c,
- 0xb2, 0x81, 0x2d, 0x86, 0xbe, 0x05, 0x90, 0xe5, 0x80, 0xec, 0x8d, 0x1d,
- 0xee, 0x9d, 0x6d, 0x67, 0x78, 0xbb, 0xaf, 0xc3, 0x92, 0xb3, 0xea, 0x58,
- 0xee, 0x85, 0x08, 0xa8, 0x2f, 0xb6, 0xc9, 0xc9, 0x7e, 0xbc, 0xb0, 0x6f,
- 0x0a, 0x0f, 0x92, 0xe9, 0x2e, 0x38, 0x24, 0xec, 0x46, 0xce, 0xc0, 0x2f,
- 0xe4, 0xc0, 0xb0, 0x7d, 0xa2, 0x94, 0x43, 0x79, 0xc4, 0x80, 0x22, 0xa2,
- 0xd4, 0x3f, 0xab, 0x11, 0x87, 0x21, 0x08, 0xd4, 0x36, 0x07, 0x41, 0xe3,
- 0x3b, 0x0d, 0xa6, 0x22, 0xba, 0x29, 0xb3, 0x01, 0xa7, 0x78, 0x6e, 0xd9,
- 0x69, 0x51, 0x5b, 0x8e, 0xe9, 0xaa, 0x47, 0x32, 0x34, 0x49, 0x08, 0x03,
- 0x1f, 0xdf, 0xba, 0x5e, 0x83, 0x32, 0xba, 0xbf, 0xfb, 0x82, 0x5e, 0x4f,
- 0x85, 0x76, 0x6b, 0x01, 0x56, 0x03, 0xc6, 0x3e, 0x28, 0xa4, 0x3d, 0x34,
- 0x75, 0xb5, 0xad, 0x70, 0x8d, 0x3c, 0xd4, 0xac, 0xb2, 0xe5, 0xd0, 0xeb,
- 0x13, 0xe7, 0x14, 0x9c, 0x16, 0xb0, 0xdf, 0xf9, 0x56, 0x34, 0x7c, 0x86,
- 0x9e, 0x52, 0xf4, 0x21, 0xc9, 0x61, 0x95, 0x9f, 0x29, 0x00, 0x9b, 0x80,
- 0x43, 0x5a, 0x90, 0x43, 0xc5, 0xb2, 0x12, 0x87, 0xc2, 0x1a, 0x0a, 0x54,
- 0x92, 0x6a, 0x41, 0x95, 0x07, 0xff, 0xf0, 0x7d, 0xd5, 0x83, 0x9f, 0xc0,
- 0xb6, 0x78, 0x5c, 0x7c, 0x7c, 0x3e, 0x50, 0xd8, 0x4d, 0xfb, 0x02, 0xce,
- 0xf1, 0x13, 0xc7, 0xcf, 0x3b, 0x23, 0x77, 0x82, 0x81, 0xe2, 0xa2, 0xe2,
- 0x6c, 0x42, 0x88, 0x34, 0x23, 0x7f, 0x3c, 0x17, 0x35, 0xeb, 0x67, 0x1f,
- 0x51, 0xba, 0xdc, 0xe7, 0x3e, 0x21, 0x5d, 0xf0, 0x27, 0x70, 0x35, 0xd1,
- 0x4c, 0x46, 0x8f, 0x67, 0x4a, 0x88, 0x11, 0x4f, 0x80, 0x9d, 0xda, 0x0c,
- 0x2c, 0x1f, 0x53, 0x11, 0xe0, 0xda, 0x62, 0x16, 0x87, 0x8d, 0xeb, 0xe0,
- 0xcf, 0xa6, 0xd1, 0x26, 0x50, 0x7d, 0x35, 0xda, 0x47, 0x85, 0xdc, 0x85,
- 0x66, 0x01, 0x09, 0xc6, 0x17, 0x0c, 0x52, 0x49, 0xbe, 0x09, 0x63, 0x0c,
- 0x40, 0x34, 0x94, 0x0d, 0x52, 0x68, 0xc4, 0x68, 0x1f, 0x6d, 0x2e, 0x31,
- 0x1c, 0x1f, 0x68, 0xcc, 0xb7, 0x48, 0x32, 0x2c, 0x87, 0x0d, 0xe0, 0x62,
- 0x53, 0x3c, 0x4b, 0xa0, 0x73, 0xcb, 0x2e, 0x5c, 0x6e, 0xcb, 0x82, 0x47,
- 0x51, 0x0f, 0x1e, 0x2e, 0xa2, 0x66, 0x5f, 0x03, 0xe0, 0x22, 0x89, 0xae,
- 0x01, 0x55, 0x4a, 0xe2, 0xa0, 0xcc, 0x03, 0xc9, 0x58, 0xd5, 0x2c, 0x79,
- 0xf1, 0xb9, 0x18, 0x40, 0x45, 0xb1, 0x2c, 0x81, 0xa3, 0x84, 0x52, 0x35,
- 0xdb, 0x83, 0x01, 0xc4, 0x3d, 0xe1, 0xc2, 0x28, 0x07, 0xf8, 0xb1, 0x13,
- 0x81, 0x4c, 0x19, 0x1c, 0x3d, 0x0a, 0xbb, 0xa0, 0xdc, 0xea, 0x2a, 0xb6,
- 0xcf, 0x44, 0x43, 0x30, 0x86, 0x8d, 0x38, 0x85, 0x24, 0xba, 0xc2, 0xcd,
- 0x11, 0x6d, 0x90, 0xde, 0xd9, 0x0c, 0x21, 0xae, 0x9e, 0x01, 0x39, 0xba,
- 0x34, 0x23, 0x47, 0xb5, 0xdb, 0xc1, 0xa3, 0xba, 0xc3, 0x9b, 0x49, 0x31,
- 0x01, 0x2c, 0x41, 0x17, 0xb4, 0x74, 0x9b, 0xa2, 0x5e, 0x4f, 0x85, 0xbf,
- 0xe9, 0x57, 0x1c, 0x83, 0xa8, 0x30, 0xce, 0xcb, 0xa1, 0x44, 0x04, 0x65,
- 0x4a, 0x8c, 0x4c, 0x67, 0xa3, 0xa3, 0x03, 0x22, 0x36, 0xd5, 0x92, 0x42,
- 0x1b, 0x80, 0x76, 0x62, 0x19, 0x75, 0xf0, 0x39, 0x46, 0xc6, 0x19, 0x38,
- 0x43, 0x2b, 0x86, 0x63, 0xb8, 0x32, 0x1e, 0x1c, 0x28, 0xc7, 0x4b, 0x40,
- 0xbb, 0xa2, 0xb0, 0x3e, 0xdf, 0xd7, 0xa6, 0xda, 0xb1, 0x0a, 0x82, 0x37,
- 0x89, 0x56, 0x2f, 0x03, 0xde, 0x24, 0xd8, 0x01, 0xeb, 0x33, 0xc9, 0xaf,
- 0xaa, 0x6e, 0x35, 0x6c, 0xd1, 0x0f, 0x40, 0x0b, 0x3f, 0x4b, 0xa1, 0x23,
- 0x8d, 0xa0, 0xc5, 0x2e, 0x41, 0x53, 0x97, 0xd1, 0x28, 0x09, 0x18, 0x38,
- 0x39, 0x06, 0x3b, 0xad, 0x7d, 0x20, 0x73, 0x51, 0xa2, 0xac, 0x79, 0xa2,
- 0xfc, 0x37, 0x8c, 0xc1, 0x90, 0x3a, 0x79, 0xfd, 0x83, 0x41, 0xd2, 0xa2,
- 0xd4, 0x04, 0xa0, 0x1c, 0x33, 0x78, 0xbe, 0xe8, 0xf6, 0x04, 0xe0, 0x4f,
- 0x17, 0x28, 0x47, 0x30, 0xa5, 0x86, 0x2b, 0x7c, 0xe0, 0xdc, 0x13, 0x3b,
- 0xe5, 0xf7, 0xcc, 0xb0, 0x6f, 0x11, 0x3d, 0x33, 0xd0, 0x56, 0xaf, 0x2e,
- 0x09, 0xe4, 0x67, 0x34, 0x27, 0x61, 0xd5, 0x6b, 0x61, 0xc7, 0x9b, 0x36,
- 0xbb, 0x3c, 0x54, 0xa5, 0x40, 0x22, 0x4b, 0xd4, 0xd3, 0x60, 0xeb, 0x96,
- 0x41, 0xed, 0xa3, 0xc5, 0xb4, 0x5e, 0x3b, 0x8e, 0x0d, 0xc0, 0x86, 0x9b,
- 0xa6, 0xad, 0xdb, 0x27, 0x54, 0x26, 0xe0, 0x5b, 0x16, 0x94, 0xa9, 0x88,
- 0x38, 0x4a, 0x82, 0x42, 0xc0, 0xf6, 0x76, 0x3d, 0xd4, 0xa0, 0xcd, 0x6b,
- 0xa2, 0x1b, 0x38, 0xf0, 0x93, 0x70, 0x87, 0x3c, 0x8f, 0xce, 0x10, 0x18,
- 0x61, 0xaf, 0x5f, 0xab, 0x0a, 0xfa, 0xb8, 0xb8, 0xbb, 0x4d, 0x04, 0x47,
- 0xdf, 0xb9, 0x02, 0x7c, 0xf5, 0xa2, 0x04, 0xb7, 0x96, 0xf3, 0x46, 0x3f,
- 0xfe, 0x60, 0xaf, 0x00, 0x0d, 0x54, 0x12, 0xf1, 0xfa, 0x1f, 0xff, 0xf8,
- 0x19, 0x79, 0xca, 0x68, 0x10, 0x9d, 0x02, 0xb1, 0x4a, 0x22, 0x4a, 0xaa,
- 0x0e, 0x83, 0x45, 0x8c, 0xa4, 0x55, 0x86, 0x06, 0xd8, 0x12, 0xb5, 0xba,
- 0x9e, 0x21, 0xc9, 0x35, 0x33, 0x83, 0x91, 0x54, 0xc8, 0x65, 0xe5, 0x94,
- 0x93, 0xb6, 0x05, 0x22, 0x02, 0x0f, 0x2b, 0xa9, 0x45, 0xb8, 0x34, 0xf2,
- 0x28, 0x80, 0xf8, 0x97, 0x15, 0xe8, 0x90, 0xf1, 0x36, 0x19, 0xce, 0xac,
- 0xee, 0x67, 0xf3, 0x90, 0x09, 0xe7, 0x78, 0xd2, 0x57, 0xd1, 0x07, 0x64,
- 0xc4, 0xb3, 0x40, 0x05, 0xb3, 0xb5, 0x5b, 0x55, 0x44, 0x30, 0x22, 0x92,
- 0x8f, 0xa8, 0x47, 0x22, 0x62, 0xd4, 0xd4, 0x68, 0xc8, 0x82, 0x65, 0x3a,
- 0x66, 0x51, 0x56, 0x85, 0x1c, 0xf4, 0xf3, 0xab, 0xba, 0xa8, 0xb6, 0x74,
- 0x12, 0xca, 0xf8, 0xf7, 0xa2, 0xb2, 0x48, 0x91, 0xd9, 0x58, 0xf9, 0x00,
- 0x28, 0xce, 0x22, 0xf6, 0xa9, 0x9b, 0x45, 0x7e, 0x21, 0xdb, 0xe4, 0xf0,
- 0x6b, 0xd7, 0xa0, 0x74, 0x25, 0x27, 0x12, 0x44, 0x3a, 0x1a, 0xdf, 0xa9,
- 0x89, 0x4b, 0xb6, 0xc9, 0x94, 0xd9, 0x9d, 0xa4, 0x6a, 0xd5, 0x31, 0x95,
- 0x01, 0xd7, 0x7e, 0x27, 0xc8, 0x94, 0x93, 0x05, 0x6c, 0x1e, 0x5c, 0x9a,
- 0x39, 0x8e, 0x4d, 0xba, 0xbd, 0xbf, 0x5d, 0x24, 0x7c, 0xfb, 0xa7, 0x16,
- 0xae, 0x5c, 0x72, 0x40, 0x2d, 0xd5, 0x40, 0x72, 0xbb, 0xa3, 0xda, 0x16,
- 0x3d, 0x98, 0xe8, 0xe7, 0xef, 0x7c, 0x66, 0xd2, 0xb0, 0x72, 0x09, 0xe9,
- 0xd8, 0x8a, 0x53, 0x73, 0x88, 0x3c, 0x60, 0x96, 0x6a, 0xd8, 0x1e, 0x17,
- 0xd3, 0x8d, 0xdf, 0x81, 0xc3, 0xdf, 0x0e, 0xbe, 0xa6, 0xca, 0x1a, 0x93,
- 0x84, 0xb1, 0xe0, 0x37, 0x92, 0x2e, 0x42, 0xca, 0x76, 0x18, 0xaf, 0x97,
- 0x02, 0x9c, 0xaf, 0x06, 0xbb, 0x7e, 0x33, 0x9f, 0x9d, 0xdb, 0xe1, 0x8d,
- 0x61, 0x94, 0x1b, 0x59, 0x96, 0x7f, 0xcf, 0x22, 0x26, 0x18, 0x82, 0xb9,
- 0xd1, 0x84, 0xe6, 0x4f, 0xb3, 0x37, 0x18, 0x41, 0x51, 0xf3, 0xe4, 0x39,
- 0xa4, 0x6e, 0x4a, 0xf1, 0xdf, 0x31, 0x2f, 0xd5, 0xa9, 0x29, 0x2e, 0x22,
- 0xe8, 0x97, 0x98, 0xd4, 0x60, 0x52, 0x2a, 0xbf, 0x02, 0x80, 0xe0, 0xaf,
- 0x58, 0x82, 0xe7, 0xba, 0xe2, 0x54, 0x1e, 0xa0, 0x47, 0x63, 0x6e, 0xbf,
- 0x11, 0x18, 0x4f, 0xc4, 0x3c, 0xe0, 0xbe, 0xc5, 0x4c, 0xc3, 0x89, 0x18,
- 0x18, 0x3c, 0xd5, 0x6a, 0x34, 0x7b, 0x1c, 0x0d, 0x0f, 0x17, 0xc9, 0x75,
- 0x15, 0xb8, 0x0d, 0x55, 0x79, 0x20, 0x5d, 0x35, 0xad, 0xfc, 0x1b, 0x95,
- 0x51, 0x44, 0x6b, 0x7a, 0x29, 0x68, 0x48, 0x18, 0x65, 0x04, 0x5c, 0x87,
- 0x6a, 0x09, 0x80, 0x07, 0x77, 0xbb, 0x16, 0x85, 0x5e, 0x17, 0x03, 0x85,
- 0x52, 0xb7, 0xc0, 0x99, 0x2a, 0x34, 0x77, 0xd7, 0x8e, 0xad, 0xe2, 0xbf,
- 0xa7, 0xc4, 0xf6, 0x5e, 0x6d, 0x3b, 0xb1, 0x8c, 0xa5, 0x8a, 0xeb, 0x28,
- 0xd5, 0xa5, 0x91, 0xfe, 0x03, 0x43, 0x55, 0xac, 0x8d, 0x71, 0x60, 0x2c,
- 0xf8, 0xdc, 0x95, 0x58, 0x8a, 0xd9, 0x4b, 0x12, 0x7b, 0xd1, 0xa0, 0x58,
- 0x4a, 0xb5, 0x2a, 0x22, 0x9c, 0x09, 0x26, 0x82, 0x5e, 0xed, 0xdf, 0x8e,
- 0x51, 0xac, 0xa4, 0xb9, 0x9c, 0xa4, 0x69, 0xd6, 0x52, 0xf8, 0x11, 0x15,
- 0xd9, 0xaf, 0x9c, 0xa8, 0x2b, 0xce, 0xc9, 0x78, 0xe5, 0xa8, 0x1f, 0x2a,
- 0xfb, 0x15, 0x20, 0x6c, 0x9f, 0x04, 0x19, 0x8f, 0x12, 0x25, 0xa1, 0x5b,
- 0x50, 0x45, 0xcb, 0x54, 0x12, 0xd7, 0x01, 0xaa, 0xe0, 0x20, 0x11, 0xe6,
- 0x2c, 0x9f, 0xb1, 0xb8, 0xa5, 0xc4, 0x72, 0x05, 0xde, 0x6b, 0xf9, 0x1f,
- 0xed, 0x45, 0x05, 0x68, 0xf4, 0x7e, 0xc8, 0x83, 0x1e, 0x73, 0x27, 0x98,
- 0x33, 0x52, 0x4d, 0xcd, 0xfc, 0xc0, 0xcf, 0x0a, 0xae, 0x68, 0x99, 0x5f,
- 0xd4, 0x54, 0x16, 0xaf, 0x90, 0x62, 0x47, 0x72, 0x1a, 0x2f, 0x65, 0x11,
- 0xf1, 0x0f, 0xe8, 0x10, 0x29, 0xa2, 0xf1, 0x02, 0x71, 0x85, 0xc9, 0x09,
- 0xc6, 0x99, 0xc8, 0x41, 0x57, 0xe7, 0x4c, 0x2b, 0x78, 0x46, 0xb5, 0x61,
- 0x49, 0x45, 0x80, 0xf0, 0xeb, 0x82, 0x27, 0x9c, 0x44, 0xe2, 0x92, 0xcc,
- 0x1f, 0xbe, 0xaf, 0x87, 0xe2, 0x9c, 0x21, 0xc6, 0x12, 0xe1, 0x39, 0xcb,
- 0x65, 0x01, 0xb0, 0x2b, 0xf0, 0x45, 0xeb, 0xbd, 0xf3, 0x9a, 0x05, 0x2e,
- 0x62, 0x8e, 0x6c, 0xb4, 0xc0, 0x0b, 0xe8, 0x6c, 0x8e, 0x9b, 0x63, 0x7e,
- 0x9e, 0x45, 0xc0, 0x34, 0xe5, 0xc7, 0x91, 0xaa, 0x0f, 0xd2, 0x82, 0x69,
- 0xa3, 0x64, 0x54, 0x82, 0x78, 0x26, 0xa2, 0x9b, 0xaa, 0xf4, 0x20, 0xa8,
- 0x53, 0xf5, 0x21, 0x8e, 0x99, 0x94, 0x7c, 0x91, 0x37, 0x3a, 0x95, 0x2b,
- 0x7b, 0x2a, 0xba, 0xb2, 0xc6, 0x04, 0x3e, 0xda, 0xda, 0x18, 0x2f, 0xdf,
- 0x20, 0xeb, 0x60, 0x08, 0x9e, 0x42, 0x8a, 0xae, 0x1c, 0x3b, 0x2e, 0x5c,
- 0x00, 0xd0, 0x30, 0xa6, 0x73, 0x1f, 0x2c, 0xc5, 0xa5, 0x7a, 0xab, 0xd1,
- 0xa0, 0x7b, 0x29, 0xf6, 0x1c, 0x8b, 0x4c, 0x22, 0x34, 0x4c, 0x9c, 0x0d,
- 0xb8, 0x36, 0x15, 0x12, 0x22, 0x6b, 0xe7, 0x64, 0x51, 0xa9, 0xdf, 0xa2,
- 0x92, 0x30, 0xef, 0x00, 0x70, 0x96, 0xe7, 0xa2, 0x1c, 0x4a, 0x0d, 0x73,
- 0x59, 0x5b, 0x9e, 0xdb, 0x45, 0xa2, 0x2e, 0x37, 0x85, 0xff, 0x4a, 0xaa,
- 0x05, 0x30, 0x45, 0xf2, 0x8a, 0xad, 0x67, 0x4e, 0x7e, 0xd0, 0x2a, 0x27,
- 0x13, 0x2f, 0xbf, 0x21, 0x6e, 0x24, 0xbe, 0x94, 0x29, 0xaf, 0xf1, 0x4e,
- 0x72, 0xa0, 0x10, 0x99, 0x26, 0x16, 0x61, 0xcf, 0x4a, 0x77, 0x3a, 0xbd,
- 0x0b, 0xeb, 0x6c, 0x5a, 0x82, 0x4e, 0x11, 0x62, 0x10, 0xe4, 0xf8, 0x90,
- 0x2d, 0x4e, 0xb6, 0xbe, 0xc4, 0xe1, 0x39, 0x60, 0x18, 0x6c, 0x85, 0xdc,
- 0x86, 0x62, 0xfa, 0x61, 0xcc, 0x2b, 0xe6, 0x24, 0x0b, 0x57, 0xba, 0x1d,
- 0x96, 0x1d, 0x36, 0xbd, 0x26, 0xcc, 0xf3, 0x30, 0x14, 0xd7, 0x1e, 0x81,
- 0xd5, 0xde, 0x70, 0x9a, 0x88, 0x0c, 0xa7, 0xac, 0x76, 0x2a, 0x33, 0x74,
- 0x48, 0xbe, 0xe7, 0x2b, 0x00, 0x60, 0x4b, 0x8a, 0xea, 0x6b, 0x86, 0x54,
- 0xc3, 0x3a, 0x6c, 0x6e, 0x6c, 0x31, 0xb3, 0x82, 0xfa, 0x24, 0x44, 0xe7,
- 0xa7, 0xe8, 0x30, 0xa2, 0xb3, 0x8b, 0xa9, 0xe9, 0xe7, 0xb6, 0x1e, 0xb6,
- 0x52, 0xa0, 0xe2, 0xfb, 0x16, 0x0b, 0xa2, 0xf0, 0x6f, 0x59, 0x3a, 0x52,
- 0x4d, 0x81, 0x24, 0xc5, 0xdc, 0x98, 0x49, 0xf1, 0xf4, 0x84, 0x04, 0x8d,
- 0x79, 0xdb, 0x4a, 0x21, 0x8d, 0x28, 0xa2, 0xc3, 0xf7, 0x3e, 0x2b, 0xaa,
- 0x52, 0x95, 0x2f, 0x90, 0x1b, 0x0d, 0xa1, 0xb2, 0x69, 0x46, 0x4a, 0x96,
- 0xcb, 0x5b, 0x00, 0x80, 0xcc, 0x70, 0x6a, 0x0f, 0xd6, 0xff, 0x4e, 0x6a,
- 0x29, 0xcd, 0xd2, 0x81, 0x48, 0x40, 0x94, 0x48, 0xf4, 0x2b, 0xe6, 0xf5,
- 0xc5, 0xe9, 0x65, 0x47, 0x06, 0x53, 0x4f, 0x0d, 0xb9, 0x6c, 0xc7, 0xae,
- 0x8f, 0xb2, 0xf4, 0xf0, 0x7f, 0x7a, 0xa2, 0x18, 0xd3, 0x5c, 0x15, 0x03,
- 0x57, 0x08, 0xfa, 0x4c, 0x0e, 0xa5, 0xd6, 0x43, 0xcc, 0x7d, 0x46, 0x5b,
- 0x41, 0x17, 0x22, 0xda, 0xf9, 0x39, 0xd5, 0xa9, 0x37, 0x60, 0xac, 0x88,
- 0x3a, 0x7d, 0x0b, 0x97, 0x73, 0x42, 0x97, 0xe6, 0x81, 0x92, 0x23, 0x01,
- 0xe3, 0xa0, 0x01, 0x59, 0x18, 0x99, 0xa8, 0x01, 0x3d, 0x48, 0x66, 0x44,
- 0xfe, 0xdf, 0x4f, 0x2a, 0xc2, 0x24, 0xa1, 0xb7, 0x05, 0xc6, 0x04, 0xda,
- 0x79, 0x85, 0x05, 0x78, 0x24, 0xf3, 0x8e, 0x46, 0xc4, 0x46, 0x9b, 0x8d,
- 0x4d, 0x1a, 0xa6, 0xa7, 0xc6, 0x45, 0xc5, 0x0a, 0xc2, 0x27, 0x51, 0xa9,
- 0x97, 0x61, 0xbf, 0x51, 0x30, 0x9d, 0x0c, 0x03, 0x70, 0x7b, 0x40, 0xdb,
- 0x90, 0xad, 0x46, 0x09, 0xbd, 0xcd, 0xde, 0x93, 0x0d, 0xcc, 0xb6, 0x01,
- 0xcb, 0xac, 0xb3, 0x18, 0x9f, 0x4e, 0x9e, 0x38, 0x42, 0xa3, 0xe7, 0x53,
- 0xa9, 0x43, 0x2a, 0x9a, 0x2a, 0x14, 0xf6, 0xd1, 0x12, 0xc7, 0x43, 0x7d,
- 0xd5, 0x17, 0xb6, 0x56, 0x0a, 0x5b, 0x0e, 0x1d, 0xc7, 0xcf, 0x74, 0x75,
- 0x5e, 0x90, 0x35, 0x18, 0x48, 0xae, 0x76, 0xcb, 0xd5, 0x03, 0x44, 0xb3,
- 0x14, 0xa3, 0xd5, 0xea, 0x3f, 0x92, 0x3f, 0x5c, 0xa4, 0x1a, 0x55, 0xfb,
- 0xff, 0xd3, 0x33, 0x17, 0x2c, 0xd4, 0x3a, 0xf4, 0xdf, 0x1b, 0xb6, 0x02,
- 0xa7, 0x96, 0xa4, 0x3e, 0x5b, 0x7b, 0xa0, 0x87, 0xc1, 0x74, 0x40, 0x7e,
- 0xc1, 0x1a, 0xc9, 0xbd, 0x2b, 0x3a, 0x0e, 0xdd, 0x26, 0x8f, 0xb0, 0xe6,
- 0x4c, 0xe2, 0x4f, 0x6a, 0x4c, 0xee, 0x58, 0x5b, 0x11, 0xb1, 0x77, 0x82,
- 0x99, 0xc4, 0xc8, 0xe4, 0xc0, 0x12, 0x07, 0x35, 0xc2, 0x51, 0xc0, 0x9c,
- 0xc0, 0xf4, 0x0e, 0xe6, 0x30, 0xc4, 0xc9, 0x54, 0x2d, 0x2e, 0xaa, 0x5b,
- 0xeb, 0xf6, 0x12, 0x4c, 0x49, 0x26, 0x93, 0x8a, 0x67, 0xf9, 0x12, 0x82,
- 0x31, 0xfd, 0xb5, 0xb8, 0x2d, 0x6b, 0xf8, 0xf4, 0x72, 0x02, 0x05, 0x08,
- 0x44, 0x62, 0x47, 0x9d, 0x0c, 0x3e, 0x4e, 0x8f, 0xd3, 0x03, 0x1f, 0x84,
- 0x10, 0xfe, 0xd7, 0xe9, 0x61, 0xaa, 0x19, 0x52, 0xb2, 0xdc, 0x45, 0x8b,
- 0x6f, 0x5b, 0xae, 0x06, 0x90, 0xa8, 0x11, 0xb0, 0x9e, 0x6f, 0x1b, 0x29,
- 0x38, 0xe1, 0x04, 0xb8, 0xee, 0x89, 0xbe, 0x54, 0x9a, 0xd3, 0x10, 0x7b,
- 0x26, 0x46, 0xbf, 0x82, 0x59, 0x4c, 0x54, 0x85, 0xe5, 0xc3, 0xb1, 0x3e,
- 0x50, 0xdc, 0x83, 0xaf, 0x51, 0x3f, 0x9a, 0xdc, 0x07, 0xf5, 0x91, 0x05,
- 0x5a, 0x9e, 0xe2, 0x82, 0x44, 0x0b, 0x4e, 0xe8, 0x39, 0x91, 0xae, 0xb9,
- 0x77, 0x99, 0x5e, 0x9d, 0x54, 0x74, 0x24, 0x17, 0x76, 0x48, 0x8f, 0x08,
- 0x61, 0x5a, 0x86, 0x79, 0x0c, 0xc0, 0xd4, 0x86, 0xd3, 0xd2, 0x62, 0x72,
- 0x52, 0xbd, 0x06, 0x95, 0x38, 0x50, 0xdc, 0xae, 0x56, 0x85, 0x27, 0xcb,
- 0x8c, 0xdd, 0x51, 0x4c, 0xa9, 0x63, 0x06, 0x03, 0x03, 0x0b, 0xf8, 0x3b,
- 0xb2, 0xc7, 0x68, 0x15, 0x8d, 0x2b, 0x27, 0x55, 0xe9, 0xe5, 0x71, 0xf0,
- 0x59, 0x87, 0x06, 0xe6, 0x09, 0x7e, 0x24, 0x9f, 0x84, 0x9f, 0x58, 0xaa,
- 0x81, 0xf8, 0xf3, 0x32, 0xda, 0x45, 0x27, 0x18, 0x7f, 0x29, 0xde, 0x18,
- 0xb1, 0x33, 0xdf, 0x91, 0xa0, 0x9f, 0x33, 0x33, 0x14, 0xa7, 0x27, 0x2a,
- 0xad, 0x31, 0xa9, 0x74, 0xf6, 0x84, 0x51, 0x0a, 0x62, 0x31, 0xa6, 0x20,
- 0xbe, 0x8f, 0x73, 0x36, 0x2d, 0x19, 0x83, 0x31, 0x4a, 0x9d, 0x57, 0x85,
- 0x9e, 0xbe, 0x70, 0xf1, 0xa8, 0x38, 0x73, 0x51, 0x20, 0x90, 0x54, 0x6e,
- 0x13, 0x7f, 0xc9, 0x9b, 0x13, 0x05, 0xd0, 0x2a, 0xeb, 0xa1, 0xe3, 0xe8,
- 0x20, 0x53, 0x03, 0x2b, 0xaa, 0x60, 0x27, 0x89, 0x63, 0x60, 0x13, 0x9f,
- 0xf7, 0x2f, 0xd1, 0xdd, 0xc8, 0x03, 0x4e, 0xd0, 0x44, 0x05, 0x22, 0x9c,
- 0x78, 0x26, 0x48, 0xc4, 0xc3, 0xd0, 0x25, 0x73, 0x51, 0xea, 0x0f, 0x68,
- 0x77, 0x7a, 0x92, 0x94, 0x98, 0xf1, 0xb8, 0xf2, 0x8f, 0xd9, 0x3b, 0x14,
- 0xa2, 0x0a, 0xd9, 0x9f, 0x71, 0x64, 0x88, 0xe5, 0x01, 0xc9, 0x3b, 0x44,
- 0x7b, 0x8c, 0xe6, 0xec, 0xcf, 0x69, 0x0d, 0x2e, 0xf6, 0x65, 0x61, 0xe7,
- 0xd3, 0x2b, 0x90, 0x42, 0xae, 0x24, 0xf2, 0x9d, 0xe8, 0x5f, 0x76, 0xc8,
- 0xd1, 0x45, 0xaa, 0xd8, 0xeb, 0x5a, 0x81, 0x00, 0x4e, 0xa2, 0xc3, 0x60,
- 0x6b, 0x80, 0xdd, 0x17, 0x0c, 0x8a, 0xe4, 0x94, 0xbe, 0xa0, 0x55, 0x5f,
- 0xb4, 0xf2, 0x78, 0x5d, 0x71, 0xca, 0xf0, 0x24, 0x76, 0x01, 0x85, 0xf7,
- 0x99, 0x9b, 0xf1, 0x12, 0xcb, 0x93, 0xc1, 0xac, 0xf6, 0x54, 0x12, 0x73,
- 0xfa, 0xf5, 0xa9, 0xf0, 0x06, 0x42, 0xab, 0xc1, 0xcd, 0xb4, 0x79, 0x68,
- 0xec, 0x85, 0xe6, 0x85, 0xfa, 0xa0, 0x2a, 0x54, 0x65, 0xc4, 0xbc, 0xb5,
- 0x47, 0x4a, 0xe6, 0x6c, 0xb3, 0xcf, 0xbc, 0x49, 0x2f, 0x5c, 0xe3, 0x4e,
- 0x72, 0xcd, 0x40, 0x71, 0xc1, 0x9d, 0x73, 0xdd, 0xab, 0xbe, 0x7d, 0x85,
- 0xff, 0xcb, 0xe5, 0x5f, 0xa1, 0xe4, 0x4f, 0x31, 0x4c, 0xeb, 0x20, 0xe4,
- 0x55, 0xc3, 0xf1, 0x02, 0x4e, 0x04, 0x3a, 0x2a, 0x2a, 0x61, 0xdc, 0x1d,
- 0xc9, 0x84, 0xe7, 0xb9, 0x41, 0x5c, 0x42, 0x28, 0x34, 0x8b, 0x05, 0x76,
- 0x58, 0x85, 0xce, 0xd2, 0x76, 0x4d, 0x0a, 0x43, 0xae, 0x49, 0xb2, 0xd5,
- 0xa1, 0x32, 0x3b, 0x70, 0x8d, 0x84, 0x6f, 0xc4, 0xd7, 0x4e, 0xc4, 0x44,
- 0x19, 0xda, 0x2e, 0xd0, 0x43, 0x20, 0xed, 0x02, 0x64, 0x94, 0x04, 0x1f,
- 0x13, 0x00, 0xd1, 0x4f, 0xc0, 0x24, 0x45, 0x1a, 0xf6, 0xa8, 0x24, 0x03,
- 0x83, 0x07, 0x0e, 0xf1, 0x92, 0xe3, 0x2c, 0x86, 0xcc, 0x91, 0x25, 0xdf,
- 0x41, 0x0a, 0x06, 0xc6, 0x5d, 0x86, 0x44, 0x76, 0x99, 0x67, 0x53, 0x0e,
- 0x44, 0x61, 0x52, 0x86, 0x84, 0xc1, 0x78, 0xf4, 0xc3, 0x50, 0x87, 0x4e,
- 0x08, 0x94, 0x44, 0x43, 0x53, 0xed, 0xa0, 0x1f, 0xb6, 0xec, 0x64, 0xd0,
- 0x23, 0xea, 0xe8, 0x84, 0x4a, 0x27, 0xd3, 0x63, 0x13, 0x1d, 0x9d, 0x1a,
- 0xae, 0x85, 0x1c, 0x69, 0xf4, 0xcc, 0x1c, 0xf0, 0x56, 0x5a, 0x30, 0x83,
- 0x95, 0x36, 0xa9, 0x5e, 0xd5, 0x87, 0x41, 0x97, 0x16, 0x5b, 0xd0, 0xb8,
- 0x53, 0xd3, 0x22, 0x21, 0xc3, 0xdf, 0xc1, 0xef, 0x2e, 0x35, 0x79, 0xe5,
- 0xa3, 0x06, 0xd4, 0xcc, 0x71, 0x48, 0x79, 0x93, 0x72, 0xae, 0x79, 0xb5,
- 0xd8, 0x36, 0x42, 0xb1, 0x68, 0x0c, 0x1f, 0x80, 0x30, 0xc0, 0x2a, 0x48,
- 0x2c, 0x1b, 0x44, 0x27, 0x01, 0xde, 0x43, 0x2b, 0xb7, 0x6a, 0x84, 0xef,
- 0xe8, 0x90, 0x45, 0xb0, 0x1e, 0x2a, 0x29, 0xfb, 0xcb, 0x0e, 0x3b, 0x35,
- 0x65, 0x3b, 0x2c, 0xfb, 0xf5, 0x50, 0x73, 0x43, 0x43, 0xcc, 0x3a, 0xc0,
- 0xd5, 0xb4, 0xf5, 0x33, 0xe3, 0x79, 0x5d, 0x3c, 0x73, 0x4f, 0x02, 0x59,
- 0x1e, 0x05, 0x09, 0xd4, 0xb7, 0xa3, 0x0a, 0x2a, 0xa3, 0xfb, 0x04, 0xf5,
- 0x44, 0xb5, 0x5a, 0x49, 0x89, 0x15, 0xba, 0x3d, 0x53, 0x3b, 0xc9, 0x10,
- 0x95, 0xd5, 0x55, 0x9b, 0x7e, 0xbf, 0x23, 0x5b, 0xb1, 0xe5, 0x2a, 0x3a,
- 0x20, 0xaf, 0x50, 0x46, 0x04, 0x44, 0xba, 0xaa, 0x0b, 0x16, 0x0c, 0x0a,
- 0xfb, 0x28, 0x2c, 0xa1, 0x79, 0xe3, 0x81, 0x9c, 0x0a, 0x92, 0xc5, 0xf9,
- 0xe6, 0x96, 0x0f, 0x41, 0x0c, 0x52, 0x50, 0xbb, 0x60, 0x2c, 0xb8, 0x19,
- 0x3d, 0x6a, 0xc0, 0x4d, 0x1f, 0x14, 0x4a, 0xbe, 0x22, 0xf7, 0x05, 0x83,
- 0xf8, 0xa4, 0xd9, 0x88, 0x9c, 0x77, 0x9c, 0x09, 0x00, 0xc0, 0xa9, 0xff,
- 0x87, 0xab, 0xec, 0x08, 0x30, 0xac, 0x30, 0x0a, 0x66, 0xe4, 0x51, 0xb4,
- 0x8f, 0x20, 0xd7, 0xcb, 0x4a, 0xd6, 0xa0, 0x80, 0x01, 0xb2, 0x60, 0x5f,
- 0x50, 0xd5, 0x91, 0x89, 0x76, 0x01, 0x2a, 0xf5, 0x72, 0x40, 0x6b, 0x9a,
- 0x51, 0x85, 0x51, 0xe4, 0xb0, 0x01, 0x83, 0x3b, 0x34, 0xb4, 0x34, 0xd9,
- 0x02, 0xf8, 0x1b, 0xd8, 0x4f, 0xca, 0x15, 0x29, 0x03, 0x41, 0xd6, 0x04,
- 0xd2, 0x18, 0x05, 0x35, 0x39, 0x6c, 0xe6, 0xa4, 0x80, 0x31, 0x69, 0x7c,
- 0xa2, 0xb3, 0x50, 0x25, 0xfc, 0x82, 0xeb, 0x76, 0xd8, 0x41, 0x5e, 0x90,
- 0xa4, 0xa2, 0x7f, 0x6b, 0x79, 0x50, 0xca, 0x62, 0x49, 0x85, 0xe0, 0x16,
- 0x8e, 0xd5, 0x96, 0x7e, 0x8a, 0xb4, 0xb1, 0x72, 0x25, 0x26, 0x06, 0xa6,
- 0x58, 0xfd, 0xb0, 0x69, 0x3b, 0xa9, 0x58, 0xb7, 0x9f, 0xdd, 0x9e, 0xd1,
- 0xcb, 0x82, 0xaf, 0x8a, 0x6b, 0xab, 0xc0, 0x25, 0x14, 0x4b, 0xe1, 0x10,
- 0x05, 0x11, 0xb8, 0x5e, 0xe8, 0xb0, 0x61, 0xc4, 0x1f, 0x89, 0x6e, 0x68,
- 0x3d, 0x5e, 0x06, 0x20, 0x4a, 0x20, 0x73, 0xa4, 0x1f, 0x89, 0xba, 0xf1,
- 0xfc, 0x69, 0x8b, 0xce, 0x65, 0xe0, 0x61, 0x54, 0xc8, 0xf8, 0x01, 0x4b,
- 0x15, 0xdd, 0x58, 0xcd, 0x48, 0xb2, 0xb1, 0xaf, 0x9a, 0x01, 0x85, 0xc1,
- 0xd0, 0x90, 0x1c, 0x15, 0xc3, 0xb7, 0x4f, 0x9b, 0x5d, 0x58, 0x68, 0x19,
- 0x95, 0x92, 0xd8, 0x0a, 0xd8, 0x72, 0xe9, 0x22, 0x5c, 0x18, 0xa6, 0x59,
- 0x58, 0x0c, 0x70, 0xa8, 0x88, 0xcf, 0xc5, 0xa5, 0x39, 0x94, 0xda, 0x5c,
- 0x3a, 0x72, 0xf3, 0xf3, 0x7c, 0x10, 0x52, 0xce, 0x12, 0xcb, 0x5c, 0xb0,
- 0xbb, 0x8d, 0xee, 0x6f, 0xb1, 0xce, 0x92, 0x68, 0xcd, 0x81, 0xa8, 0x4c,
- 0x43, 0xb1, 0x2a, 0xf4, 0xc5, 0xe3, 0xc3, 0xed, 0x38, 0xad, 0x97, 0x56,
- 0xe5, 0xac, 0xa5, 0x8f, 0x91, 0xdd, 0xc0, 0x14, 0xbb, 0xb1, 0x36, 0x28,
- 0xb1, 0xf6, 0x57, 0xab, 0x01, 0x3d, 0x35, 0x6f, 0x42, 0x12, 0x93, 0xd5,
- 0x61, 0xa1, 0x5b, 0x25, 0x9c, 0x28, 0x15, 0x23, 0xeb, 0x34, 0x3a, 0x8a,
- 0x4b, 0x46, 0xda, 0x34, 0xd9, 0x6d, 0x62, 0x59, 0x8b, 0x54, 0x56, 0x27,
- 0x3a, 0x2e, 0x98, 0x76, 0x52, 0x5f, 0xb5, 0x73, 0xfd, 0x80, 0x3d, 0xc2,
- 0x6a, 0x97, 0x1a, 0xf6, 0xa0, 0xa9, 0x54, 0xe5, 0xec, 0x68, 0x78, 0x33,
- 0x87, 0xd0, 0x93, 0x72, 0x84, 0x9f, 0xc0, 0x12, 0xfe, 0x3f, 0x29, 0x38,
- 0x76, 0xe6, 0xa8, 0x0a, 0xe3, 0x73, 0xe7, 0xf1, 0x6d, 0x45, 0x2a, 0x85,
- 0x12, 0x97, 0x2e, 0xf5, 0x7b, 0x8d, 0x34, 0xf1, 0x9d, 0xe2, 0x31, 0xec,
- 0x16, 0x1e, 0x24, 0x81, 0x94, 0x46, 0xb4, 0x43, 0xa4, 0x87, 0x62, 0x3a,
- 0xa6, 0xc2, 0x86, 0x67, 0x56, 0x6c, 0x78, 0xd7, 0x4d, 0xcb, 0x09, 0xe0,
- 0xc4, 0x0e, 0x84, 0xb7, 0x7b, 0xea, 0xf2, 0xe5, 0xa4, 0x10, 0x1a, 0x7b,
- 0xfb, 0x94, 0xb7, 0x46, 0x34, 0x29, 0x9d, 0x65, 0x6c, 0x79, 0x67, 0x18,
- 0xa7, 0xc2, 0xbd, 0x50, 0x6e, 0x96, 0x06, 0x53, 0x0d, 0xd1, 0x9d, 0x2c,
- 0xc8, 0xba, 0xe3, 0xfe, 0xf6, 0xfd, 0x79, 0x28, 0x5b, 0x4a, 0xe1, 0x4f,
- 0xfc, 0xa8, 0x53, 0x47, 0x3f, 0xac, 0xd0, 0x2b, 0xcc, 0x68, 0x09, 0xe5,
- 0xb2, 0x74, 0x39, 0x75, 0xe9, 0xd1, 0x76, 0xa4, 0x72, 0x74, 0xcd, 0x1e,
- 0x11, 0x41, 0x0f, 0x3b, 0x0c, 0x21, 0x73, 0x6d, 0x84, 0xe4, 0x7e, 0x88,
- 0x67, 0x23, 0xdb, 0x04, 0x3c, 0x74, 0xc9, 0x51, 0x42, 0xab, 0xa5, 0xd0,
- 0xd5, 0x54, 0x48, 0xc9, 0x1c, 0xa0, 0x27, 0x50, 0x73, 0xf5, 0xad, 0x45,
- 0x51, 0x51, 0x04, 0x07, 0xa8, 0x30, 0xea, 0x13, 0x88, 0xb9, 0x5f, 0x3a,
- 0x0a, 0x8b, 0xbc, 0x6c, 0x5c, 0x73, 0x90, 0x84, 0x42, 0x41, 0xe5, 0xea,
- 0x75, 0x28, 0xa4, 0xd0, 0x74, 0x66, 0x89, 0xb2, 0xcc, 0x71, 0x31, 0x14,
- 0x69, 0x2b, 0x12, 0xf7, 0x31, 0x75, 0xcc, 0xd2, 0x47, 0x37, 0x02, 0x58,
- 0x9e, 0xab, 0xb6, 0x46, 0x74, 0xf0, 0xe1, 0x86, 0x9a, 0x4b, 0xf6, 0x50,
- 0x60, 0xf7, 0xed, 0x0a, 0xab, 0x1b, 0xd7, 0xa2, 0x8c, 0x63, 0x55, 0x5d,
- 0xb1, 0xea, 0x5a, 0xef, 0xd3, 0x85, 0xa4, 0x44, 0xe3, 0x2b, 0xbc, 0xc0,
- 0x52, 0xe1, 0xe4, 0x3d, 0xab, 0x35, 0x4c, 0x01, 0xb9, 0x34, 0xef, 0x79,
- 0x94, 0x79, 0xb8, 0x33, 0x89, 0x5e, 0x0e, 0x31, 0x11, 0xed, 0x45, 0x34,
- 0x3a, 0xff, 0x00, 0x30, 0x47, 0xad, 0xde, 0x92, 0x1f, 0xb1, 0xa3, 0x9a,
- 0xe1, 0xd3, 0x05, 0xc3, 0x66, 0x5c, 0x38, 0x27, 0xbe, 0x2b, 0xed, 0xae,
- 0x9e, 0x23, 0x08, 0x69, 0x92, 0x87, 0x68, 0x0a, 0x82, 0x55, 0xf2, 0x82,
- 0x00, 0x03, 0xa2, 0x40, 0x9b, 0x11, 0x4d, 0x0c, 0x0d, 0xa6, 0x45, 0x28,
- 0xf1, 0x8e, 0x01, 0x4a, 0x29, 0x7e, 0x10, 0x4f, 0x8b, 0xb0, 0xf5, 0xcb,
- 0x85, 0x9d, 0xc5, 0xbc, 0xcc, 0xa3, 0xd3, 0x80, 0xea, 0x24, 0xf9, 0x6d,
- 0x4c, 0x70, 0x60, 0x3b, 0x58, 0xe7, 0xd2, 0xd2, 0x1b, 0xa4, 0x71, 0xa9,
- 0x97, 0x3e, 0x08, 0x6f, 0x6a, 0xdb, 0x19, 0xd2, 0xac, 0xd4, 0xe3, 0x70,
- 0x47, 0x05, 0xf7, 0x02, 0x52, 0xbd, 0x61, 0xe3, 0xb8, 0xe9, 0xa7, 0x73,
- 0xaa, 0xf6, 0x62, 0xca, 0xed, 0xc2, 0x1c, 0x07, 0x82, 0x77, 0x2e, 0x24,
- 0x03, 0x25, 0xb9, 0x26, 0x2d, 0x9b, 0xe0, 0x9c, 0x98, 0xa6, 0x3b, 0xc8,
- 0x8c, 0x04, 0x69, 0xc0, 0x35, 0x23, 0xdc, 0xe4, 0x86, 0x75, 0x62, 0xec,
- 0xb3, 0x83, 0xd9, 0xcc, 0xcd, 0x34, 0x69, 0xb1, 0x7a, 0x1a, 0xc8, 0xca,
- 0x6a, 0x31, 0x8c, 0xaa, 0x54, 0x4e, 0x38, 0x71, 0xac, 0xef, 0xa0, 0xe7,
- 0x09, 0xab, 0xda, 0x48, 0xd3, 0x15, 0x47, 0x61, 0x37, 0x1c, 0xf9, 0xd6,
- 0x2a, 0xf5, 0xb4, 0x86, 0x36, 0xe4, 0x6d, 0x39, 0xfc, 0x87, 0x7f, 0x11,
- 0x0e, 0x24, 0x53, 0x3e, 0xe6, 0x93, 0x8c, 0x0a, 0xf4, 0x56, 0xdb, 0x9b,
- 0x79, 0x6d, 0x4e, 0x57, 0x1d, 0xc1, 0x82, 0x8e, 0x55, 0x78, 0x42, 0x93,
- 0x84, 0xdb, 0x17, 0xcc, 0x41, 0x79, 0x08, 0x16, 0xcf, 0xb1, 0x02, 0xd2,
- 0x63, 0x1f, 0x3f, 0xc1, 0xc9, 0x82, 0x18, 0x0e, 0x56, 0x1d, 0x2b, 0x8d,
- 0xc1, 0x63, 0x14, 0xd2, 0xe3, 0xcf, 0xad, 0x28, 0x20, 0x3e, 0xb7, 0xad,
- 0x94, 0xcb, 0x1c, 0xdf, 0x46, 0xf3, 0xd9, 0x45, 0x2f, 0x2d, 0x4a, 0x28,
- 0xe6, 0x28, 0xe0, 0x83, 0x49, 0x7d, 0x46, 0x9b, 0xa1, 0xb4, 0xc4, 0xd9,
- 0x09, 0x2a, 0x11, 0xe4, 0x69, 0xd4, 0x2c, 0xd6, 0xed, 0x4a, 0xbe, 0xa8,
- 0x7d, 0x11, 0x30, 0xe0, 0x3d, 0x74, 0xe2, 0xc0, 0x8f, 0x42, 0x9f, 0x9d,
- 0xfd, 0x8f, 0x17, 0x3d, 0xe0, 0xa8, 0xd2, 0xfb, 0xe2, 0x3c, 0x26, 0x1b,
- 0x28, 0xc4, 0x62, 0x4e, 0x80, 0x8f, 0x72, 0x42, 0x84, 0xe2, 0x54, 0x72,
- 0xc7, 0x12, 0x17, 0x21, 0x8f, 0x29, 0xcf, 0x49, 0xe5, 0x75, 0x77, 0x94,
- 0x3e, 0xd4, 0xf9, 0x0e, 0x14, 0xef, 0x3d, 0x5a, 0xf7, 0x11, 0x77, 0x93,
- 0xba, 0xad, 0x1e, 0xaf, 0x91, 0x3a, 0x51, 0xb4, 0xf4, 0x4d, 0x67, 0x87,
- 0xb4, 0xd8, 0x4b, 0xa5, 0x72, 0x37, 0x25, 0x70, 0x6e, 0xba, 0x91, 0x22,
- 0x38, 0xac, 0x63, 0x01, 0x48, 0x8f, 0x00, 0x18, 0x6e, 0x91, 0xba, 0x04,
- 0xc4, 0x70, 0x8e, 0xca, 0x28, 0xc2, 0xb4, 0xa1, 0x2e, 0x69, 0x2a, 0xb6,
- 0xa3, 0xab, 0xd3, 0xb5, 0xcf, 0xbf, 0x2a, 0x28, 0xf2, 0x32, 0x25, 0xfa,
- 0x53, 0x4c, 0x7e, 0x5c, 0x49, 0x41, 0x12, 0x79, 0x93, 0x5a, 0x7e, 0x81,
- 0xf9, 0x2d, 0xcc, 0x79, 0x51, 0x9b, 0x4c, 0xa5, 0x46, 0x44, 0x88, 0x49,
- 0x69, 0x39, 0xb3, 0x06, 0x6a, 0xc6, 0x45, 0x0e, 0xde, 0xbe, 0xfe, 0x3b,
- 0x09, 0xd3, 0xd7, 0x3f, 0x8f, 0x61, 0xf8, 0x0d, 0x6d, 0x4c, 0x4d, 0x42,
- 0xdc, 0x87, 0x76, 0x53, 0x72, 0x5b, 0xba, 0xe7, 0xa0, 0xbe, 0x62, 0x0b,
- 0x4f, 0x12, 0x7e, 0xe6, 0x94, 0x5b, 0x28, 0x7b, 0xe1, 0xd4, 0x28, 0xa3,
- 0x0b, 0xe8, 0x3f, 0xa4, 0x1d, 0x7c, 0x70, 0x07, 0x62, 0xfd, 0x61, 0xa7,
- 0xb1, 0xc5, 0x83, 0x6c, 0x2b, 0x2d, 0x22, 0x19, 0x57, 0xcd, 0xc9, 0x32,
- 0xea, 0x39, 0x3d, 0x87, 0x96, 0x47, 0xc1, 0xce, 0x76, 0xd5, 0x47, 0xe8,
- 0x57, 0xe7, 0xc8, 0xfe, 0xa1, 0xe6, 0x0d, 0x28, 0x25, 0xf8, 0x5e, 0x99,
- 0x0e, 0x86, 0x9b, 0x7c, 0xaa, 0x9a, 0xe0, 0xdc, 0x46, 0x9a, 0x15, 0xf0,
- 0x63, 0xc7, 0x2d, 0xff, 0xfd, 0x98, 0xb3, 0x43, 0xfe, 0x5d, 0x38, 0xcb,
- 0x12, 0xfb, 0x6e, 0xbb, 0xcf, 0x24, 0x4f, 0x65, 0x89, 0x80, 0xa1, 0x17,
- 0x6a, 0xdb, 0xf3, 0x49, 0xf4, 0x30, 0x84, 0x61, 0x18, 0x90, 0x22, 0xcc,
- 0x8a, 0x89, 0x47, 0x29, 0xcf, 0xe1, 0x72, 0xe4, 0xb2, 0xf1, 0xc9, 0x81,
- 0x27, 0xf9, 0x88, 0xaa, 0xc4, 0x8b, 0xd7, 0x18, 0x06, 0x8d, 0xdb, 0x29,
- 0xb6, 0xfc, 0x0f, 0x4e, 0xef, 0xb7, 0xdd, 0xe8, 0x26, 0x82, 0x8f, 0xae,
- 0x00, 0xc7, 0x8d, 0xdc, 0x39, 0x96, 0x11, 0xd6, 0x8c, 0x4c, 0x4c, 0xb6,
- 0x20, 0xb1, 0x8d, 0xaa, 0xea, 0x3a, 0x70, 0x66, 0xf0, 0x78, 0x5c, 0xc7,
- 0x28, 0xee, 0x07, 0xa5, 0x11, 0xb6, 0x42, 0x6b, 0xf8, 0x04, 0x43, 0x31,
- 0x8d, 0x8f, 0xb3, 0x73, 0x29, 0x96, 0x20, 0xe1, 0xc7, 0xc7, 0x7d, 0xd7,
- 0x29, 0xa5, 0x61, 0xc2, 0x7b, 0xdb, 0x64, 0x65, 0x75, 0xf1, 0x24, 0x54,
- 0x17, 0x91, 0x1e, 0xa3, 0x90, 0x04, 0x51, 0x40, 0xfe, 0x3e, 0xaf, 0xf1,
- 0x40, 0xe9, 0xec, 0xb3, 0xe3, 0xda, 0x33, 0xed, 0xb2, 0x1d, 0x5d, 0xa3,
- 0x54, 0xde, 0x9c, 0x33, 0x17, 0xf2, 0x58, 0x20, 0x8a, 0x3e, 0x60, 0x43,
- 0xc6, 0xb0, 0x15, 0xb5, 0x4d, 0xe0, 0x24, 0x56, 0xfb, 0xc8, 0x18, 0x5d,
- 0x2b, 0xae, 0x9b, 0x7d, 0xfa, 0x9c, 0x68, 0x4e, 0x2e, 0x19, 0x3a, 0xba,
- 0x6e, 0x68, 0x36, 0x06, 0x03, 0xa9, 0xa5, 0x0a, 0x76, 0x09, 0x17, 0xe3,
- 0x0f, 0x47, 0x11, 0x10, 0xba, 0x03, 0x58, 0xca, 0x8d, 0x8a, 0xd8, 0xc6,
- 0xd5, 0x26, 0xa4, 0xb3, 0x31, 0x3c, 0x01, 0xf6, 0x1d, 0xca, 0xb5, 0x89,
- 0x84, 0xe6, 0x4d, 0x28, 0x05, 0x25, 0xf3, 0x06, 0xcf, 0x2e, 0x9c, 0x88,
- 0xf1, 0x03, 0xcd, 0x11, 0x85, 0xca, 0xdb, 0x18, 0x60, 0x57, 0xe5, 0x9a,
- 0x17, 0x00, 0x96, 0x54, 0xbb, 0x24, 0x4e, 0x8f, 0x6a, 0xf7, 0x8a, 0x4b,
- 0xed, 0xd9, 0xeb, 0x29, 0x44, 0x40, 0x1c, 0x2b, 0x4b, 0x4a, 0x14, 0xb4,
- 0x3d, 0x55, 0xf3, 0x56, 0xb0, 0xb3, 0xa8, 0x06, 0x67, 0x61, 0x8f, 0x1c,
- 0x24, 0x0a, 0x6c, 0xd1, 0xb3, 0x7c, 0x01, 0x8e, 0xba, 0xce, 0xd0, 0x36,
- 0x39, 0x18, 0xd3, 0x15, 0xe0, 0x33, 0x61, 0x41, 0x9b, 0x2c, 0x48, 0x96,
- 0xc5, 0xb1, 0x49, 0x10, 0xdc, 0xda, 0x92, 0xd5, 0x44, 0xa7, 0xa6, 0x5f,
- 0xa2, 0xff, 0x8f, 0x29, 0x96, 0x48, 0x94, 0xf9, 0xc9, 0x93, 0xa4, 0x7c,
- 0xda, 0x4f, 0x9b, 0x0c, 0x15, 0xcb, 0x33, 0xf3, 0xf8, 0xc6, 0x31, 0xa8,
- 0xd1, 0x6f, 0xa3, 0x1a, 0x76, 0x3f, 0x00, 0xe3, 0x3d, 0x4b, 0xc1, 0xce,
- 0x29, 0xf8, 0xd3, 0x18, 0x05, 0x81, 0xcb, 0x66, 0xee, 0x01, 0xd0, 0x5f,
- 0xf1, 0x0d, 0xe8, 0xbc, 0x86, 0x4c, 0x74, 0xb2, 0x0e, 0x42, 0x11, 0x5e,
- 0x28, 0x60, 0x4b, 0x9b, 0x99, 0xa6, 0x54, 0x32, 0x02, 0x28, 0xa0, 0x1b,
- 0x90, 0xa0, 0xc2, 0x01, 0xe1, 0xe6, 0x33, 0x24, 0x98, 0x21, 0xe4, 0x75,
- 0x72, 0x1d, 0x85, 0x9c, 0x30, 0xb3, 0xb8, 0x22, 0x8a, 0x32, 0x07, 0xc9,
- 0x8e, 0xcc, 0x50, 0x0e, 0x36, 0xfe, 0xec, 0xa0, 0x20, 0x2b, 0xe1, 0x9f,
- 0x76, 0xcc, 0x51, 0x53, 0x35, 0xa8, 0xa4, 0x64, 0x5d, 0x12, 0xc3, 0xb1,
- 0xe5, 0x36, 0x29, 0x78, 0x52, 0x9b, 0x2b, 0xcc, 0x28, 0x41, 0xd9, 0xd7,
- 0xab, 0x01, 0x1e, 0x9d, 0x80, 0xdf, 0x0c, 0xc7, 0x00, 0x90, 0x44, 0xd3,
- 0xbc, 0x86, 0x1c, 0x57, 0xe2, 0x08, 0xa0, 0x34, 0x08, 0xde, 0xff, 0xba,
- 0x20, 0x07, 0xa5, 0x6a, 0x38, 0x1e, 0x91, 0xd6, 0x7d, 0x50, 0x3f, 0x5a,
- 0xe8, 0x18, 0x89, 0x23, 0x9b, 0x46, 0x37, 0x27, 0x0d, 0xdd, 0x04, 0x03,
- 0x2a, 0x43, 0x0f, 0xc6, 0x74, 0xa0, 0xa4, 0xc3, 0x32, 0x40, 0xf4, 0x8b,
- 0xd1, 0x40, 0x85, 0xb3, 0x80, 0x98, 0x4a, 0xfa, 0x46, 0xd8, 0xc9, 0x0f,
- 0xbb, 0x19, 0xd9, 0x8d, 0x87, 0xdb, 0x3d, 0xb7, 0x95, 0xf8, 0x99, 0x54,
- 0x2f, 0x97, 0x77, 0x59, 0xf5, 0x72, 0x00, 0x97, 0x4e, 0xbc, 0x4a, 0xe7,
- 0xa9, 0x28, 0xc7, 0xa7, 0xd5, 0x0b, 0x24, 0x4a, 0xfa, 0x64, 0xe8, 0xcb,
- 0x61, 0x2b, 0x94, 0xe3, 0x08, 0x0b, 0x06, 0xb6, 0x0a, 0xf8, 0xdb, 0x6e,
- 0x93, 0x89, 0xad, 0xd7, 0x1c, 0xfa, 0x78, 0x97, 0x14, 0x85, 0x91, 0xf1,
- 0x8e, 0xf5, 0x8f, 0x3c, 0x9f, 0x8d, 0xdc, 0xef, 0xa3, 0x26, 0x62, 0x2f,
- 0x96, 0x70, 0x67, 0xc2, 0x14, 0x3d, 0xce, 0xbb, 0x26, 0xa1, 0xea, 0xb1,
- 0x01, 0x68, 0x29, 0x46, 0x44, 0xf1, 0x05, 0x76, 0x80, 0xcf, 0x4d, 0x30,
- 0x42, 0x39, 0xa1, 0x2c, 0x91, 0x61, 0x0a, 0xa8, 0x81, 0xb3, 0x52, 0x1f,
- 0xb5, 0x23, 0xb3, 0xae, 0xaa, 0xa6, 0x34, 0xeb, 0xaa, 0xc9, 0x91, 0x98,
- 0x37, 0xf6, 0xc4, 0x5e, 0x60, 0xa4, 0xda, 0x82, 0xc7, 0x08, 0x4c, 0x63,
- 0x6d, 0x95, 0x2c, 0x6e, 0x64, 0x71, 0x9c, 0x25, 0x45, 0xec, 0x8d, 0x0c,
- 0xb4, 0x96, 0x9c, 0x25, 0x3f, 0x1b, 0xd1, 0x01, 0xe2, 0x88, 0x86, 0x40,
- 0x24, 0x36, 0x0c, 0xc5, 0x95, 0x71, 0x7a, 0x1c, 0x37, 0x0c, 0xff, 0xfc,
- 0x83, 0x2d, 0xc9, 0xaa, 0x59, 0xf7, 0x72, 0x13, 0xd4, 0x8f, 0x11, 0x48,
- 0xf4, 0x3d, 0xf8, 0xb6, 0x2d, 0x61, 0x3d, 0x6b, 0x42, 0xfa, 0x4b, 0x48,
- 0x34, 0x09, 0x12, 0x93, 0x33, 0x1d, 0x1c, 0x49, 0xdf, 0xa0, 0x93, 0x54,
- 0xce, 0x27, 0x67, 0x31, 0xdf, 0x3e, 0x8b, 0x8c, 0xd9, 0xaa, 0xd8, 0x4e,
- 0x58, 0x57, 0x1d, 0x56, 0xb6, 0x54, 0x5b, 0x17, 0x9c, 0x91, 0xa8, 0xdc,
- 0x44, 0xd6, 0xc0, 0xd2, 0x27, 0x29, 0x46, 0xfb, 0x69, 0xd9, 0x3e, 0x3d,
- 0x8f, 0x7e, 0x9c, 0x19, 0x83, 0x1b, 0x9b, 0x0e, 0x56, 0x83, 0x24, 0x18,
- 0xe3, 0xaa, 0x01, 0xbf, 0x3f, 0xa5, 0xf8, 0x35, 0x52, 0xf1, 0x01, 0xe0,
- 0xec, 0x82, 0xe3, 0xcc, 0x40, 0x71, 0x70, 0x2f, 0xca, 0x07, 0xfc, 0xeb,
- 0x01, 0x8f, 0xe5, 0x81, 0x9c, 0x10, 0xd6, 0x8b, 0x5c, 0x89, 0x18, 0x0b,
- 0x4c, 0x86, 0xc1, 0x5f, 0x99, 0xc8, 0x81, 0xd6, 0x14, 0xf9, 0x65, 0x01,
- 0x15, 0x5a, 0xbe, 0x11, 0x36, 0xa0, 0x83, 0xe2, 0x69, 0x0e, 0xb9, 0xf9,
- 0x42, 0xf5, 0x4a, 0x78, 0x98, 0xd6, 0xa2, 0x88, 0x5c, 0xd8, 0xbb, 0x94,
- 0xd2, 0x8b, 0x3e, 0xbd, 0xea, 0x84, 0x02, 0xa6, 0x49, 0xdb, 0x9b, 0xfd,
- 0x5f, 0xb0, 0x9f, 0xc8, 0x2f, 0x6d, 0xc3, 0x84, 0x10, 0x1c, 0xe6, 0x94,
- 0xcd, 0x92, 0xd4, 0xaa, 0x04, 0x13, 0xb4, 0x6c, 0x56, 0xbd, 0x8c, 0xd6,
- 0x0c, 0xe2, 0xec, 0x1f, 0x17, 0x14, 0xfd, 0xdb, 0x51, 0xeb, 0x12, 0x7a,
- 0x1a, 0x62, 0x8c, 0x4a, 0xfa, 0xf0, 0x1d, 0x77, 0xb4, 0x8d, 0xda, 0x25,
- 0xb4, 0x76, 0x32, 0x4d, 0x8e, 0x14, 0x2b, 0x1e, 0x97, 0x31, 0xea, 0x35,
- 0x03, 0x45, 0xc9, 0xe5, 0x2a, 0x0a, 0x28, 0x08, 0x4c, 0xea, 0xf2, 0xcb,
- 0x2a, 0x92, 0x62, 0xf7, 0xe3, 0xac, 0x59, 0x81, 0xdc, 0x2c, 0xb8, 0x94,
- 0x3b, 0x4c, 0x4b, 0x39, 0x2c, 0x39, 0xa4, 0x68, 0x3e, 0x99, 0xcc, 0x92,
- 0x85, 0x28, 0x34, 0xc5, 0x05, 0x30, 0x69, 0xa7, 0xc1, 0x37, 0x12, 0xe0,
- 0x26, 0x01, 0x4b, 0xe0, 0xc1, 0xe1, 0x4d, 0x24, 0xe4, 0x03, 0x75, 0x68,
- 0xd8, 0xa0, 0x08, 0x58, 0x4a, 0x1a, 0xb8, 0xd1, 0xbc, 0xa0, 0x6c, 0x69,
- 0x36, 0x7a, 0x28, 0x2d, 0x40, 0x46, 0x49, 0xcd, 0x1c, 0x99, 0x97, 0x1f,
- 0x1f, 0xd3, 0x20, 0x5c, 0x73, 0x3e, 0x6a, 0xc3, 0x74, 0xd2, 0x89, 0xcd,
- 0x9e, 0x23, 0x0f, 0xdc, 0x49, 0x78, 0x5f, 0x84, 0xb9, 0x74, 0xeb, 0x1d,
- 0xb9, 0x84, 0x7c, 0xa8, 0x1a, 0x06, 0xe3, 0xc2, 0x8c, 0x1d, 0x6e, 0x3d,
- 0x64, 0x24, 0x1f, 0x34, 0x98, 0x4e, 0xa5, 0x20, 0x80, 0xec, 0x0a, 0x51,
- 0x58, 0x11, 0x07, 0x07, 0x7c, 0xcf, 0xe3, 0x86, 0xa4, 0xdc, 0x17, 0x2d,
- 0xe5, 0x99, 0x6a, 0x3e, 0x79, 0x44, 0x8c, 0xe9, 0xab, 0xf6, 0x05, 0x28,
- 0x1a, 0xe7, 0xba, 0x02, 0xa1, 0x69, 0xe1, 0x0b, 0xbd, 0x44, 0xc3, 0xa9,
- 0x82, 0xe4, 0x39, 0xd1, 0x6b, 0x95, 0x67, 0x55, 0x32, 0xed, 0xaa, 0x72,
- 0xca, 0x27, 0x06, 0xee, 0xa1, 0x7f, 0x19, 0x9c, 0x89, 0xa9, 0x34, 0xe2,
- 0x4e, 0x83, 0xb5, 0xc0, 0x11, 0x67, 0xb9, 0x15, 0x1e, 0xf4, 0x42, 0x7b,
- 0xfa, 0x81, 0x53, 0x11, 0x64, 0x7f, 0x65, 0x88, 0xcd, 0x79, 0x01, 0xc3,
- 0xce, 0x32, 0xb4, 0x06, 0x53, 0x13, 0xda, 0xf6, 0xc4, 0x7d, 0x99, 0x15,
- 0x61, 0x6d, 0x99, 0xe6, 0x42, 0x48, 0xb2, 0x04, 0x1b, 0x32, 0x9d, 0x31,
- 0x36, 0x6b, 0xec, 0x04, 0xa3, 0x78, 0xe8, 0x3c, 0xc5, 0xfc, 0xcf, 0x84,
- 0x2d, 0xfe, 0x34, 0x23, 0x14, 0x72, 0x4e, 0xbc, 0x0f, 0xb7, 0x6a, 0xf2,
- 0xc0, 0xab, 0x74, 0x24, 0x17, 0x9b, 0x60, 0x31, 0x8f, 0x8b, 0xec, 0x52,
- 0x93, 0x07, 0xe6, 0xb8, 0xea, 0x16, 0x5c, 0x46, 0x7d, 0x86, 0x2a, 0xd4,
- 0xd8, 0xf0, 0x38, 0x5c, 0x63, 0xeb, 0xba, 0x27, 0xa6, 0x9c, 0x74, 0xde,
- 0x17, 0xc9, 0xb7, 0x53, 0xec, 0xca, 0x53, 0x6f, 0xb8, 0x8e, 0x59, 0xab,
- 0xb6, 0x1a, 0x7b, 0x78, 0x3a, 0x29, 0x73, 0xe7, 0x24, 0x11, 0xa1, 0x1a,
- 0x94, 0x46, 0x7a, 0x56, 0x14, 0xc2, 0xc9, 0x15, 0xa7, 0xe2, 0x83, 0x2b,
- 0x4d, 0xb0, 0x38, 0x37, 0x3c, 0x80, 0x75, 0x3b, 0xc8, 0xa2, 0x51, 0x9e,
- 0x6b, 0xbf, 0x01, 0xe7, 0x5a, 0x38, 0xd9, 0xbe, 0xff, 0x0e, 0x9b, 0x03,
- 0x5d, 0x49, 0x5d, 0x94, 0x1c, 0x86, 0xa1, 0x24, 0x27, 0x78, 0x11, 0x20,
- 0xa4, 0x4b, 0x76, 0x10, 0x86, 0xba, 0x34, 0x14, 0x89, 0x8b, 0xe6, 0x16,
- 0xa6, 0x45, 0xab, 0x76, 0xa0, 0xf6, 0x04, 0xb6, 0xb8, 0xc0, 0x7c, 0xae,
- 0x07, 0x84, 0x4b, 0xba, 0x14, 0xc7, 0x7d, 0x15, 0x27, 0x13, 0x75, 0xe9,
- 0x11, 0x02, 0xb9, 0x9e, 0x80, 0x09, 0xcd, 0x19, 0x33, 0xfe, 0x3b, 0x15,
- 0xf5, 0xf7, 0xa3, 0x91, 0xb0, 0xd2, 0xf2, 0x17, 0x54, 0xbd, 0x5b, 0xaf,
- 0xb1, 0xe4, 0xea, 0xc0, 0x6c, 0x16, 0x7f, 0x1b, 0x25, 0xcf, 0x11, 0x17,
- 0xca, 0x6b, 0xe6, 0x4d, 0xda, 0x0c, 0x43, 0xee, 0x73, 0xd4, 0x92, 0x8f,
- 0x2a, 0x9f, 0xfa, 0xde, 0x4f, 0x19, 0xd2, 0xd9, 0x68, 0x08, 0x71, 0x0a,
- 0x4d, 0xba, 0x7f, 0xe4, 0x58, 0x1c, 0xdd, 0xdc, 0xb5, 0xfb, 0xa2, 0x96,
- 0x4c, 0x59, 0x9b, 0x94, 0xd0, 0x71, 0xf7, 0x56, 0x84, 0x65, 0x0c, 0xc7,
- 0xa9, 0xd9, 0x4a, 0xfb, 0xf4, 0xc4, 0x38, 0x6d, 0x02, 0x39, 0x1c, 0xcb,
- 0xcc, 0x98, 0x5e, 0x4d, 0x56, 0x2c, 0x4c, 0x89, 0xa5, 0x57, 0xdc, 0x06,
- 0xc9, 0xf7, 0x4f, 0x15, 0xa9, 0xf4, 0x33, 0x25, 0x7d, 0xb0, 0xa5, 0x74,
- 0xc0, 0x50, 0x09, 0xa6, 0xcf, 0x9e, 0xd4, 0x89, 0x37, 0x89, 0xa1, 0x2e,
- 0x0f, 0x47, 0x81, 0x5d, 0xc6, 0x2c, 0xc8, 0x94, 0xb5, 0x12, 0x88, 0x15,
- 0xae, 0x9a, 0x99, 0xc6, 0xca, 0x46, 0x1a, 0x50, 0x5d, 0xd4, 0xcc, 0x8a,
- 0x88, 0x99, 0x2e, 0x44, 0xbd, 0xd2, 0xa1, 0x70, 0xb8, 0x4f, 0x2c, 0x7c,
- 0x92, 0xae, 0x92, 0xd7, 0xaf, 0x2f, 0xec, 0x1d, 0xed, 0xee, 0xe3, 0xc8,
- 0xb9, 0x86, 0xa3, 0x8e, 0x6d, 0x37, 0xd1, 0xc2, 0x9b, 0x91, 0xc9, 0x88,
- 0x3c, 0x15, 0x22, 0xba, 0xd4, 0x13, 0x70, 0xc4, 0x8d, 0x1f, 0x29, 0xe9,
- 0x64, 0x30, 0x5d, 0x36, 0x2d, 0x46, 0xff, 0x0c, 0x3b, 0x51, 0x1b, 0x1b,
- 0x2b, 0x1e, 0x23, 0xfc, 0x36, 0xf8, 0x38, 0x9b, 0x30, 0x36, 0x42, 0x68,
- 0x89, 0x82, 0x80, 0x09, 0xdc, 0x98, 0x42, 0x1d, 0xc6, 0xef, 0x85, 0x1e,
- 0x92, 0xec, 0xc9, 0x38, 0x0c, 0x27, 0x45, 0xbb, 0x64, 0xa9, 0x50, 0xbe,
- 0x65, 0xbf, 0x36, 0xa0, 0x78, 0x5c, 0x99, 0x4c, 0xe3, 0xa8, 0xd3, 0x10,
- 0x76, 0x58, 0x78, 0x1a, 0x8b, 0x96, 0x6a, 0xcc, 0x9a, 0xe1, 0x5c, 0x51,
- 0x31, 0x72, 0xe0, 0x76, 0x50, 0x91, 0xb2, 0xa9, 0xaf, 0xbf, 0x9d, 0xaa,
- 0xa6, 0xc0, 0xe1, 0x79, 0x94, 0x16, 0x4c, 0x6e, 0x9c, 0x0c, 0x6e, 0x30,
- 0xe6, 0x1a, 0x34, 0x77, 0x43, 0x4b, 0xb8, 0x39, 0x2c, 0x99, 0x5e, 0x8f,
- 0x89, 0x83, 0xc2, 0x85, 0xdc, 0x23, 0x2d, 0x69, 0xb1, 0x31, 0x52, 0xa6,
- 0x06, 0xa3, 0x32, 0x62, 0x10, 0x6a, 0x66, 0x9a, 0x8f, 0x7a, 0x12, 0x24,
- 0x4a, 0x3c, 0xd1, 0x00, 0xb0, 0x91, 0xa1, 0xa4, 0xbc, 0x7f, 0xac, 0xa5,
- 0xf7, 0xc8, 0xde, 0xcc, 0xd1, 0x26, 0x0d, 0xbc, 0xd2, 0x81, 0xe2, 0x30,
- 0x97, 0xa9, 0x5c, 0x64, 0x5b, 0x4f, 0xe2, 0xc0, 0xb7, 0x58, 0x58, 0xa1,
- 0xe1, 0x55, 0x23, 0x57, 0xe4, 0xb5, 0xf3, 0x9d, 0x9a, 0xd2, 0x68, 0xdc,
- 0x11, 0x22, 0x8d, 0x43, 0x76, 0x9e, 0x1e, 0x09, 0x05, 0xaf, 0x59, 0xa8,
- 0x80, 0x52, 0x0d, 0x23, 0xed, 0x39, 0xe7, 0xf6, 0xce, 0x08, 0x75, 0x62,
- 0x84, 0x15, 0x14, 0xd7, 0x08, 0xe3, 0x07, 0x70, 0xea, 0x61, 0x57, 0x97,
- 0x38, 0x55, 0x2b, 0x48, 0x9d, 0x57, 0x3c, 0x33, 0x27, 0x73, 0xb9, 0x13,
- 0xd1, 0x9f, 0x13, 0xe1, 0x09, 0x1a, 0x44, 0xe3, 0xc2, 0xf0, 0x48, 0x0b,
- 0xaa, 0xcb, 0xc2, 0xbb, 0x14, 0x46, 0xe7, 0x6a, 0x77, 0xe2, 0x72, 0x66,
- 0xf1, 0x38, 0xf6, 0x85, 0xa7, 0x52, 0x7c, 0xc5, 0x24, 0xe1, 0xdd, 0xe5,
- 0xe0, 0xa7, 0x08, 0x83, 0x03, 0x59, 0xda, 0xfd, 0x89, 0x95, 0xde, 0x2c,
- 0x44, 0x68, 0xb0, 0xb7, 0xaa, 0x2b, 0x8a, 0x3e, 0x4d, 0xf2, 0x43, 0xb2,
- 0x90, 0x68, 0xf6, 0x1a, 0x1e, 0x31, 0xf0, 0xa8, 0x93, 0xe8, 0x14, 0xa7,
- 0xdf, 0xab, 0x9e, 0xe3, 0x6f, 0xd2, 0x5f, 0x86, 0xc5, 0x01, 0xad, 0xb8,
- 0x2f, 0x3c, 0x89, 0x96, 0x2a, 0x90, 0x68, 0x98, 0x06, 0x79, 0xb7, 0x94,
- 0x38, 0x3d, 0x0b, 0x63, 0xe7, 0x1a, 0x5d, 0xf9, 0xc0, 0x16, 0xa6, 0xf1,
- 0xf6, 0xf1, 0x1d, 0xde, 0xef, 0xd9, 0x35, 0x05, 0x37, 0x72, 0xd2, 0x64,
- 0xf9, 0x41, 0xe2, 0xfe, 0xfc, 0x44, 0x3a, 0x7b, 0xf2, 0xfc, 0x82, 0x07,
- 0x30, 0xd2, 0x3d, 0x4f, 0xa4, 0xf8, 0x7c, 0x14, 0x34, 0xe1, 0xe2, 0x06,
- 0xb6, 0x2e, 0xc2, 0x80, 0x4c, 0x19, 0xe8, 0xce, 0xb5, 0xea, 0x27, 0x4e,
- 0x7b, 0x70, 0x2e, 0x25, 0x8d, 0xb4, 0x99, 0x9d, 0xd6, 0x3d, 0x56, 0xe5,
- 0x34, 0x32, 0x5f, 0x71, 0x8c, 0x0a, 0x40, 0x4d, 0x5d, 0x81, 0x35, 0xdb,
- 0xe0, 0xcd, 0x01, 0xa8, 0xdc, 0xa5, 0x76, 0xb2, 0x38, 0x35, 0x35, 0x18,
- 0x74, 0x48, 0x44, 0x5e, 0x46, 0x4c, 0x29, 0x00, 0x13, 0x46, 0x9a, 0xd3,
- 0x28, 0x6f, 0xac, 0x9b, 0xd4, 0xbe, 0xe8, 0xf2, 0x9b, 0x2d, 0x49, 0x56,
- 0x6b, 0xdb, 0x0b, 0x13, 0xe7, 0x2b, 0x87, 0x4d, 0x46, 0x2d, 0x0f, 0x41,
- 0x49, 0x53, 0x95, 0x41, 0x3e, 0x89, 0x99, 0x43, 0x0c, 0xa6, 0x0f, 0x09,
- 0x55, 0x0c, 0x8e, 0x26, 0xa5, 0xaf, 0xda, 0x20, 0x76, 0xe2, 0xac, 0x70,
- 0x06, 0x8c, 0x39, 0xb6, 0x26, 0x6c, 0x1e, 0x0b, 0x55, 0x31, 0x19, 0xf8,
- 0xc4, 0x8e, 0x87, 0xc3, 0x59, 0xa1, 0xec, 0xa3, 0x50, 0x41, 0x8a, 0xa0,
- 0x28, 0x99, 0xca, 0x8e, 0x46, 0xcb, 0x88, 0x20, 0xd8, 0x49, 0xae, 0x7c,
- 0x1a, 0x85, 0x09, 0x93, 0xcb, 0xce, 0x7e, 0x0a, 0x3b, 0x4c, 0x53, 0x89,
- 0x64, 0xfe, 0x82, 0x44, 0x3a, 0x2c, 0x23, 0xa0, 0x12, 0x82, 0x52, 0x28,
- 0x85, 0x98, 0xa2, 0x4e, 0xdd, 0xa6, 0xe0, 0x11, 0xc5, 0x56, 0x00, 0x9c,
- 0x78, 0xf8, 0xaf, 0x31, 0xb1, 0xe8, 0xe0, 0xc2, 0x10, 0x99, 0x91, 0x4c,
- 0x4a, 0x18, 0xce, 0x63, 0x79, 0xba, 0x2b, 0x2a, 0x06, 0x0d, 0x01, 0x8c,
- 0x48, 0xcb, 0xca, 0x14, 0x94, 0xa4, 0x64, 0xd9, 0x1c, 0x84, 0xb7, 0xd9,
- 0xe6, 0xe9, 0xd8, 0xfe, 0xd2, 0x98, 0x0b, 0x03, 0xc6, 0x8d, 0x83, 0xc7,
- 0x7a, 0x2b, 0x4d, 0xfe, 0x26, 0x6b, 0x9f, 0xe0, 0xb0, 0xa6, 0xa5, 0x1e,
- 0x15, 0xb6, 0x73, 0x82, 0x9a, 0xe1, 0x12, 0x6e, 0xb6, 0x59, 0x34, 0x29,
- 0x6a, 0x64, 0x01, 0x1b, 0x7a, 0xee, 0x24, 0xee, 0x82, 0x96, 0x2c, 0x93,
- 0x43, 0x5d, 0xb9, 0x67, 0x17, 0x8b, 0x30, 0x84, 0xeb, 0x70, 0x5e, 0x78,
- 0xe7, 0x87, 0x82, 0x0b, 0xb2, 0xd8, 0x6c, 0x86, 0x63, 0x36, 0x2e, 0x1b,
- 0x93, 0x8a, 0xca, 0xb5, 0xce, 0x8b, 0xea, 0x40, 0x8f, 0xc9, 0x45, 0xb3,
- 0x6c, 0x4b, 0xa6, 0x01, 0xa4, 0x0e, 0x32, 0xf9, 0x6e, 0x58, 0x41, 0x3a,
- 0xa8, 0xaf, 0x05, 0x4f, 0x88, 0x27, 0x3c, 0x3d, 0x70, 0x9d, 0xa9, 0x7d,
- 0x9d, 0xf2, 0x87, 0xc7, 0xe4, 0x10, 0x99, 0x05, 0x69, 0x75, 0xb0, 0xf3,
- 0xe2, 0xbc, 0x1e, 0x1b, 0xa0, 0x13, 0x0c, 0xb4, 0x30, 0x5a, 0x48, 0xab,
- 0x7d, 0x03, 0x6c, 0xaa, 0x30, 0x4c, 0x48, 0x68, 0xe0, 0x59, 0x75, 0xda,
- 0x5f, 0xea, 0x29, 0x1d, 0x78, 0xd3, 0xcd, 0x11, 0x2a, 0xa1, 0xef, 0x27,
- 0x30, 0xf8, 0xa8, 0x11, 0xb2, 0x10, 0x36, 0x93, 0xb2, 0x84, 0x7c, 0x70,
- 0x38, 0x57, 0xec, 0x5e, 0xc9, 0xb7, 0x60, 0xc3, 0x8f, 0x02, 0xe1, 0x94,
- 0xa9, 0x0e, 0xa3, 0x0d, 0xc4, 0x60, 0x9d, 0x8d, 0x11, 0x03, 0x5b, 0x4d,
- 0x70, 0xfe, 0x48, 0x57, 0x91, 0x4a, 0x69, 0xbb, 0x3d, 0x75, 0xc6, 0x1e,
- 0x1b, 0x91, 0xc7, 0x79, 0x3a, 0x1e, 0xf6, 0x07, 0xa7, 0x4b, 0xaa, 0x87,
- 0xb8, 0x32, 0x7c, 0x1a, 0x26, 0xbe, 0xf8, 0xb1, 0xfb, 0xc2, 0xb6, 0xb5,
- 0x8f, 0x43, 0xbd, 0xe2, 0xbc, 0x05, 0xb6, 0x0c, 0xa2, 0xa3, 0x33, 0x2a,
- 0x4f, 0x0a, 0xd6, 0x4b, 0x2c, 0x41, 0xca, 0xcb, 0x51, 0x4f, 0x7b, 0x21,
- 0x17, 0xb9, 0xd3, 0x35, 0x56, 0x0e, 0x8c, 0x2a, 0x89, 0xe4, 0x90, 0xf1,
- 0x1a, 0xdd, 0x60, 0x54, 0x4c, 0x91, 0x3c, 0x43, 0x12, 0x30, 0x29, 0xa8,
- 0x94, 0x5c, 0xa0, 0x91, 0x5c, 0xd3, 0x12, 0x2d, 0x48, 0x29, 0x22, 0x8d,
- 0xed, 0x8e, 0x14, 0x27, 0xd3, 0x8f, 0x65, 0x30, 0x80, 0xb1, 0xe4, 0x84,
- 0xd4, 0xe0, 0xae, 0xd8, 0x6f, 0xa9, 0xce, 0xa9, 0x8d, 0x09, 0x05, 0xd9,
- 0x21, 0x9b, 0x4a, 0x21, 0xa3, 0x69, 0x34, 0xbe, 0x2a, 0x43, 0x02, 0xf7,
- 0x5c, 0x98, 0x2f, 0x62, 0x65, 0x34, 0xa3, 0x2f, 0xdd, 0x6f, 0xbc, 0x36,
- 0xdb, 0x66, 0x53, 0x1d, 0x69, 0x1e, 0x44, 0x75, 0x0c, 0xbc, 0xb2, 0x24,
- 0xd1, 0x38, 0xdd, 0x01, 0x77, 0x68, 0xe0, 0x75, 0x4a, 0x6d, 0x49, 0x29,
- 0xf9, 0x8c, 0x05, 0x3e, 0x4d, 0x27, 0x3d, 0x94, 0x0a, 0x79, 0x27, 0x5e,
- 0x26, 0xd2, 0x42, 0x11, 0xad, 0x14, 0xef, 0x9c, 0x71, 0xfd, 0x5c, 0xe5,
- 0xe4, 0xa3, 0x1d, 0xe2, 0xaf, 0xb7, 0x5e, 0x27, 0x34, 0x9f, 0xb3, 0xf2,
- 0xc0, 0x24, 0x04, 0xc0, 0x41, 0x2d, 0x8e, 0x5c, 0xe2, 0xd9, 0x94, 0xc7,
- 0xb6, 0x0e, 0x2c, 0x2a, 0x75, 0xee, 0x5e, 0x4c, 0x0f, 0x6d, 0xd3, 0xf6,
- 0x2a, 0x13, 0x29, 0x3b, 0x7b, 0x84, 0x81, 0x25, 0x91, 0x82, 0xb0, 0x39,
- 0x8a, 0x11, 0x94, 0x3c, 0xd3, 0x41, 0x08, 0x34, 0x8a, 0x35, 0x13, 0x1a,
- 0x4b, 0x73, 0x9c, 0xe0, 0x67, 0x08, 0x84, 0x6e, 0xa7, 0x31, 0xea, 0xfe,
- 0xe3, 0x7f, 0xd9, 0xf7, 0x45, 0x07, 0xb7, 0x85, 0x1f, 0x93, 0xd2, 0xfa,
- 0xa2, 0x4d, 0xa5, 0xa3, 0x65, 0x93, 0xb0, 0x5f, 0xe8, 0xd4, 0xa0, 0x61,
- 0x72, 0xdd, 0x10, 0x72, 0x7c, 0xe2, 0x4e, 0x27, 0xa5, 0x3a, 0xe4, 0x20,
- 0x63, 0x01, 0x24, 0x56, 0x1e, 0x84, 0x69, 0x6c, 0xf1, 0xf3, 0x24, 0xeb,
- 0x10, 0xa6, 0xc9, 0xe6, 0x8a, 0x4b, 0x61, 0x0a, 0xc8, 0xb6, 0x60, 0x22,
- 0x2f, 0x5d, 0x5e, 0x39, 0x19, 0xc2, 0xee, 0x69, 0xa6, 0x53, 0x0f, 0x2a,
- 0x83, 0xad, 0x5e, 0xff, 0x78, 0x81, 0xc3, 0xad, 0x1e, 0x06, 0xb0, 0x32,
- 0xe8, 0x51, 0xb8, 0xef, 0x5b, 0x5c, 0xd1, 0x7f, 0x47, 0x5f, 0xcb, 0x2a,
- 0xdb, 0xad, 0xda, 0x6f, 0xa3, 0x79, 0x7f, 0x1c, 0xa2, 0x28, 0x65, 0x4e,
- 0x99, 0x3d, 0x53, 0xff, 0x90, 0xc6, 0xd9, 0x0d, 0x34, 0x19, 0x86, 0xd3,
- 0x19, 0x89, 0xfd, 0x18, 0x81, 0x3d, 0xb7, 0x52, 0xc5, 0x86, 0x85, 0x0f,
- 0x65, 0xb5, 0x0a, 0x65, 0xf9, 0xba, 0xc5, 0xb1, 0x94, 0xdb, 0x5e, 0xe7,
- 0xdb, 0x01, 0x22, 0x51, 0xdd, 0xe2, 0xbe, 0x21, 0x36, 0x74, 0xfa, 0xdd,
- 0x8b, 0x68, 0x7e, 0x82, 0xb1, 0x92, 0x08, 0x9a, 0x5c, 0xc5, 0xfb, 0x56,
- 0xc6, 0x1b, 0x68, 0x6b, 0x99, 0xaf, 0xb6, 0x43, 0xdd, 0x17, 0x8d, 0xe3,
- 0x91, 0x44, 0x5c, 0xa9, 0x77, 0x30, 0x99, 0x2b, 0x0b, 0x09, 0xe8, 0x88,
- 0x14, 0xed, 0x14, 0xc3, 0x48, 0x05, 0x1d, 0x3d, 0xbe, 0x26, 0xea, 0xe5,
- 0x20, 0x2e, 0x9f, 0x86, 0x7f, 0x04, 0x40, 0x90, 0xf1, 0x05, 0x0d, 0x3f,
- 0x19, 0x87, 0x8a, 0x54, 0x26, 0x22, 0x6a, 0x29, 0x80, 0x17, 0x73, 0xe2,
- 0xda, 0x5d, 0x47, 0x39, 0x77, 0xb2, 0x75, 0xc1, 0xa3, 0xc7, 0x11, 0x2a,
- 0xea, 0xc7, 0x91, 0x09, 0x14, 0x5a, 0x30, 0x83, 0xc5, 0x93, 0xf0, 0x2c,
- 0xbc, 0x05, 0x02, 0x66, 0x9b, 0xa8, 0x7c, 0x33, 0x2a, 0xc5, 0x94, 0x2e,
- 0x15, 0xf9, 0xb2, 0x16, 0xc7, 0x02, 0x03, 0xda, 0x96, 0x2d, 0xd9, 0x7f,
- 0x6d, 0xf6, 0xbd, 0x8b, 0x0c, 0x4b, 0xc1, 0x05, 0xa7, 0x44, 0xc3, 0xba,
- 0x43, 0x26, 0xe6, 0xea, 0x4c, 0xad, 0x51, 0xcb, 0x9b, 0xc7, 0xd2, 0x69,
- 0x46, 0xaf, 0x7f, 0xba, 0xb0, 0xf7, 0x6e, 0xdb, 0xc2, 0x09, 0x6f, 0xc4,
- 0xde, 0x5e, 0xc4, 0xb9, 0xef, 0xbf, 0x61, 0xb5, 0x77, 0xb4, 0x40, 0x4f,
- 0x7f, 0x01, 0xe7, 0x3f, 0xaf, 0x0e, 0x14, 0xdc, 0xc7, 0x12, 0x48, 0x13,
- 0x10, 0x43, 0x14, 0x72, 0xd0, 0xb9, 0xc2, 0x85, 0x0f, 0xc9, 0x0c, 0x77,
- 0xf6, 0x77, 0xc3, 0x67, 0x90, 0x4c, 0x18, 0x3d, 0x92, 0x7c, 0x8f, 0xa0,
- 0xa3, 0x23, 0xd6, 0xb1, 0x9b, 0xf6, 0x70, 0x78, 0x3d, 0xd5, 0x1d, 0xd2,
- 0x96, 0xb2, 0x93, 0x09, 0x1d, 0xa4, 0xe4, 0xbb, 0x25, 0xe3, 0xf0, 0xcf,
- 0xa9, 0xaf, 0x84, 0xfe, 0xc8, 0x5f, 0x63, 0x4b, 0x32, 0x3c, 0x07, 0x4e,
- 0x86, 0x89, 0x0e, 0x55, 0xba, 0xba, 0x18, 0x7a, 0x1a, 0x05, 0xcf, 0xbe,
- 0x18, 0x73, 0xb4, 0x39, 0xf6, 0xdb, 0x8d, 0xe0, 0xd1, 0x9f, 0x22, 0xd3,
- 0x2f, 0x0c, 0x14, 0x0f, 0x23, 0x00, 0x0a, 0xd0, 0x56, 0x61, 0x60, 0x9a,
- 0xf4, 0xc0, 0x16, 0x61, 0xec, 0x47, 0xe8, 0x55, 0x97, 0xaf, 0x4f, 0xc9,
- 0x90, 0x9b, 0xa3, 0xc0, 0xb0, 0x40, 0x4e, 0x67, 0x09, 0x9f, 0xee, 0xf6,
- 0x97, 0x2c, 0xad, 0x4d, 0x5a, 0xf9, 0xc3, 0x47, 0x51, 0xb4, 0x7b, 0xed,
- 0x2b, 0xdf, 0x56, 0xd2, 0x22, 0xa4, 0xe4, 0x5b, 0x52, 0x65, 0x66, 0x85,
- 0x73, 0x85, 0x88, 0x46, 0x20, 0x42, 0xec, 0xe1, 0x3f, 0x27, 0xc9, 0xe0,
- 0xf8, 0x8c, 0x47, 0xf9, 0x34, 0x9f, 0x45, 0x73, 0xe2, 0x28, 0x97, 0x83,
- 0x3c, 0x9a, 0x5a, 0x4d, 0xd9, 0x17, 0x52, 0xa4, 0x8e, 0xfa, 0xe8, 0x57,
- 0x60, 0x4e, 0x7d, 0x9e, 0x89, 0xfb, 0x1d, 0xd9, 0x89, 0x30, 0x71, 0x70,
- 0x4c, 0x1c, 0x46, 0x9c, 0x4e, 0x07, 0x19, 0x7d, 0x61, 0x44, 0x9a, 0xb7,
- 0x8e, 0xd7, 0xc8, 0x53, 0xad, 0x48, 0xda, 0x45, 0x92, 0x8d, 0x48, 0xa1,
- 0x4a, 0xb2, 0xd0, 0xe3, 0x79, 0x60, 0x05, 0x18, 0x2d, 0xfc, 0x8e, 0x67,
- 0x0d, 0xad, 0x1f, 0x34, 0xa8, 0x21, 0x0c, 0xb8, 0x21, 0x7b, 0x9d, 0x7a,
- 0x93, 0xd3, 0x8a, 0x2b, 0xe5, 0xaa, 0xbf, 0x80, 0x02, 0x96, 0x4c, 0x7f,
- 0x43, 0xc9, 0x04, 0x77, 0x04, 0xaf, 0xff, 0x99, 0x7d, 0xa9, 0x6c, 0x14,
- 0x88, 0xc3, 0xf3, 0x9e, 0xfa, 0x12, 0x25, 0xd7, 0x50, 0xcb, 0xa8, 0xbb,
- 0x4e, 0x56, 0x93, 0x2f, 0xae, 0x25, 0x1f, 0x26, 0x92, 0x08, 0xdf, 0x5f,
- 0xf9, 0x78, 0x16, 0x0b, 0x76, 0xcc, 0x1f, 0x22, 0xda, 0xe0, 0x7f, 0x69,
- 0xa2, 0x26, 0xa0, 0x21, 0x5d, 0xce, 0x10, 0x12, 0x30, 0xa6, 0x20, 0xf3,
- 0x21, 0x71, 0x24, 0xd7, 0xae, 0xea, 0xaa, 0xd0, 0x3e, 0x2e, 0x65, 0xb2,
- 0xf1, 0x2b, 0x53, 0x88, 0x5d, 0x04, 0x96, 0xab, 0x56, 0xf1, 0x85, 0x12,
- 0x5b, 0x98, 0xf0, 0x4b, 0x64, 0x46, 0xbe, 0x9f, 0x43, 0x5b, 0x00, 0xdd,
- 0x82, 0xdd, 0xb1, 0x15, 0x1b, 0x0e, 0x34, 0x5d, 0xd7, 0x24, 0x89, 0x4d,
- 0xa5, 0x33, 0x40, 0x11, 0x8f, 0xe2, 0x25, 0x6b, 0x15, 0xa9, 0x63, 0x00,
- 0x0c, 0x20, 0x91, 0xe8, 0x13, 0xcd, 0x80, 0x93, 0x2c, 0x43, 0xa9, 0xa1,
- 0x09, 0xdd, 0x0c, 0x52, 0x74, 0xac, 0xee, 0x47, 0xa8, 0x59, 0xe7, 0x17,
- 0xf2, 0x16, 0xc2, 0xe3, 0x28, 0x33, 0x23, 0x94, 0x4d, 0x44, 0x0a, 0x60,
- 0xf3, 0x4d, 0x8c, 0xb6, 0xb3, 0x15, 0x25, 0xa6, 0x58, 0x1f, 0xb9, 0x8e,
- 0xa0, 0xe1, 0x0a, 0x7e, 0x12, 0x53, 0x49, 0x6c, 0xf1, 0xc4, 0x17, 0x9f,
- 0x24, 0xd0, 0xa3, 0x85, 0x7c, 0x0a, 0xa8, 0x09, 0x80, 0xf2, 0x67, 0x48,
- 0xc6, 0x10, 0xd8, 0xec, 0x8b, 0x59, 0xfd, 0x98, 0x8a, 0x4c, 0xa4, 0xa2,
- 0xc3, 0x82, 0xcc, 0xe0, 0x2b, 0x32, 0xba, 0xf6, 0xc9, 0xc7, 0xb1, 0x78,
- 0x7b, 0x75, 0x31, 0xbe, 0x49, 0x50, 0xb1, 0x7a, 0x71, 0xb5, 0x69, 0x35,
- 0x49, 0xa6, 0x6b, 0x51, 0xf8, 0x33, 0x80, 0x69, 0x8e, 0x81, 0x99, 0x10,
- 0xbb, 0x5a, 0x96, 0x29, 0xa0, 0x07, 0xd7, 0x09, 0xf4, 0xf3, 0x65, 0xcf,
- 0x9f, 0x56, 0x84, 0xbf, 0x94, 0xfa, 0xd1, 0xc2, 0xf5, 0x80, 0x83, 0xad,
- 0xcc, 0xf8, 0x93, 0x80, 0xdf, 0xe6, 0x07, 0x5c, 0x49, 0xda, 0x47, 0xb4,
- 0xab, 0x04, 0x77, 0xf8, 0xce, 0x4b, 0x48, 0x2f, 0x2f, 0x3e, 0xcc, 0x53,
- 0xfb, 0x11, 0x69, 0x69, 0xe1, 0x51, 0x92, 0x29, 0x52, 0xa3, 0x8b, 0x31,
- 0x43, 0xab, 0xeb, 0x1b, 0x1a, 0x79, 0x4a, 0x8d, 0x99, 0x6b, 0xba, 0x5e,
- 0x35, 0xfa, 0xc3, 0x59, 0x10, 0xb9, 0x4f, 0x12, 0xb9, 0x4b, 0x6b, 0x76,
- 0xdb, 0x2e, 0xd6, 0x88, 0x9b, 0xb4, 0xfb, 0x24, 0xa9, 0x62, 0x03, 0xe5,
- 0x9a, 0xbe, 0x91, 0x98, 0xab, 0x23, 0xa3, 0x1d, 0x7b, 0xe7, 0xa5, 0x0c,
- 0xbf, 0x3d, 0x52, 0x67, 0x45, 0xf6, 0xa9, 0x7c, 0x64, 0x50, 0x2d, 0x01,
- 0x3a, 0x96, 0x94, 0x81, 0x33, 0x99, 0x83, 0x0d, 0x9d, 0x91, 0x28, 0x0b,
- 0xc2, 0xbf, 0x5f, 0x84, 0x06, 0x05, 0x26, 0xac, 0x8f, 0xd2, 0xa2, 0xc0,
- 0xe2, 0xef, 0xdd, 0xfc, 0x7e, 0x6e, 0x17, 0x0f, 0xf6, 0xe6, 0xd6, 0x7e,
- 0x9c, 0xdd, 0xdf, 0xcf, 0x6e, 0x1e, 0x3f, 0xd9, 0xb7, 0xb7, 0xf7, 0xf8,
- 0x07, 0x7b, 0x77, 0x7f, 0xfb, 0xc7, 0xfd, 0xec, 0xfd, 0xd4, 0x3e, 0xde,
- 0xd2, 0xcf, 0xf3, 0x7f, 0x3f, 0xce, 0x6f, 0x1e, 0xed, 0xdd, 0xfc, 0xfe,
- 0xfd, 0xe2, 0xf1, 0x71, 0x7e, 0x65, 0xdf, 0x7c, 0x32, 0xb3, 0xbb, 0xbb,
- 0xeb, 0xc5, 0xe5, 0xec, 0xcd, 0xf5, 0xdc, 0x5e, 0xcf, 0x3e, 0xe2, 0xf7,
- 0xbb, 0xfe, 0x7d, 0x39, 0xbf, 0x7b, 0xb4, 0x1f, 0xdf, 0xcd, 0x6f, 0xec,
- 0x2d, 0x2e, 0xff, 0x71, 0xf1, 0x30, 0xb7, 0x0f, 0x8f, 0x33, 0x7c, 0x61,
- 0x71, 0x63, 0x3f, 0xde, 0x2f, 0x1e, 0x17, 0x37, 0x7f, 0xd0, 0x82, 0x97,
- 0xb7, 0x77, 0x9f, 0xee, 0x17, 0x7f, 0xbc, 0x7b, 0x34, 0xef, 0x6e, 0xaf,
- 0xaf, 0xe6, 0xf7, 0xf4, 0xb9, 0xb4, 0xef, 0x61, 0x77, 0x7a, 0xd1, 0xde,
- 0xcd, 0xee, 0x1f, 0x17, 0xf3, 0x07, 0x84, 0xe3, 0xcf, 0xc5, 0xd5, 0x3c,
- 0x85, 0xc9, 0x4e, 0x66, 0x0f, 0x00, 0xf6, 0xc4, 0x7e, 0x5c, 0x3c, 0xbe,
- 0xbb, 0xfd, 0xf0, 0x18, 0x80, 0x37, 0xb7, 0x6f, 0x61, 0x91, 0x4f, 0xf6,
- 0x5f, 0x8b, 0x9b, 0xab, 0xa9, 0x9d, 0x2f, 0x68, 0xa1, 0xf9, 0xbf, 0xef,
- 0xee, 0xe7, 0x0f, 0x0f, 0x00, 0x00, 0xac, 0xbd, 0x78, 0x0f, 0x10, 0xcf,
- 0xe1, 0x8f, 0x8b, 0x9b, 0xcb, 0xeb, 0x0f, 0x57, 0x00, 0xcb, 0xd4, 0xbe,
- 0x81, 0x15, 0x6e, 0x6e, 0x1f, 0xed, 0xf5, 0x02, 0x4e, 0x06, 0x8f, 0x3d,
- 0xde, 0x4e, 0x0d, 0xee, 0x26, 0xcf, 0xea, 0xea, 0x08, 0x0c, 0xac, 0xff,
- 0x7e, 0x7e, 0x7f, 0xf9, 0x0e, 0x7e, 0x9c, 0xbd, 0x59, 0x5c, 0x2f, 0x00,
- 0x5f, 0xf8, 0x8d, 0xb7, 0xb7, 0x8b, 0xc7, 0x1b, 0xd8, 0x82, 0x70, 0x37,
- 0x63, 0xc8, 0x2f, 0x3f, 0x5c, 0xcf, 0xee, 0xcd, 0xdd, 0x87, 0xfb, 0xbb,
- 0xdb, 0x87, 0xf9, 0x85, 0x65, 0x14, 0xc2, 0x22, 0x80, 0xf0, 0xfb, 0xc5,
- 0xc3, 0xbf, 0x2c, 0x9c, 0x40, 0x10, 0xfb, 0xdf, 0x1f, 0x66, 0x61, 0x21,
- 0xc0, 0x2e, 0xac, 0xf1, 0x7e, 0x76, 0x73, 0x39, 0xc7, 0xbd, 0x92, 0x33,
- 0x1b, 0xb8, 0x26, 0x3c, 0xae, 0xfd, 0x74, 0xfb, 0x01, 0xf5, 0x06, 0x9c,
- 0xfb, 0xfa, 0x2a, 0x43, 0x0a, 0x22, 0x6a, 0x6e, 0xaf, 0xe6, 0x6f, 0xe7,
- 0x97, 0x8f, 0x8b, 0x3f, 0xe7, 0x53, 0x7c, 0x12, 0xb6, 0x79, 0xf8, 0xf0,
- 0x7e, 0x2e, 0xf8, 0x7e, 0x78, 0x84, 0x45, 0xcd, 0xec, 0xfa, 0xda, 0xde,
- 0xcc, 0x2f, 0x01, 0xde, 0xd9, 0xfd, 0x27, 0xfb, 0x30, 0xbf, 0xff, 0x73,
- 0x71, 0x49, 0x78, 0xb8, 0x9f, 0xdf, 0xcd, 0x16, 0xf7, 0x88, 0xa5, 0xcb,
- 0xdb, 0xfb, 0x7b, 0x5c, 0xe5, 0xf6, 0x86, 0xc9, 0xe8, 0xe7, 0x0b, 0x6e,
- 0x71, 0x08, 0x69, 0xb7, 0x6b, 0xad, 0x9d, 0x67, 0xc1, 0x71, 0x83, 0x14,
- 0x34, 0xff, 0x13, 0xe9, 0xe3, 0xc3, 0xcd, 0x35, 0x62, 0xe2, 0x7e, 0xfe,
- 0xdf, 0x1f, 0xe0, 0xac, 0x48, 0x25, 0x36, 0xa7, 0x12, 0x5c, 0x7f, 0xf6,
- 0xc7, 0xfd, 0x9c, 0x10, 0x9d, 0xd0, 0x84, 0xf9, 0xb8, 0x00, 0xc0, 0xf0,
- 0xf6, 0x02, 0x61, 0x58, 0x26, 0x8c, 0x29, 0xbd, 0x02, 0x7f, 0x88, 0x84,
- 0xf1, 0x09, 0x48, 0xec, 0xd6, 0xbe, 0xbf, 0xbd, 0x5a, 0xbc, 0xc5, 0x6b,
- 0x11, 0xc2, 0xb9, 0xbc, 0xbd, 0xf9, 0x73, 0xfe, 0xe9, 0xc1, 0xa4, 0x58,
- 0x01, 0x3c, 0x47, 0x92, 0x9d, 0xbd, 0xb9, 0x45, 0xc4, 0xbc, 0x01, 0x40,
- 0x16, 0x04, 0x0f, 0x40, 0x80, 0x58, 0xc2, 0x7b, 0xbb, 0x9a, 0xbd, 0x9f,
- 0xfd, 0x31, 0x7f, 0x48, 0x28, 0x03, 0xf7, 0x34, 0xf2, 0x1d, 0xec, 0xa9,
- 0x7d, 0xb8, 0x9b, 0x5f, 0x2e, 0xf0, 0x1f, 0xf0, 0x77, 0xa0, 0x47, 0x20,
- 0x80, 0x6b, 0x46, 0xd5, 0xcd, 0x03, 0x9c, 0x15, 0xaf, 0x16, 0x7e, 0x21,
- 0x8b, 0xd8, 0x19, 0xdc, 0x31, 0xae, 0x80, 0xc4, 0xc9, 0xf7, 0x68, 0x3e,
- 0x00, 0x23, 0x20, 0x01, 0xde, 0x28, 0xe1, 0xc0, 0xde, 0xf8, 0xbb, 0x14,
- 0xd8, 0xb3, 0xb8, 0xf7, 0x21, 0x51, 0xda, 0xeb, 0xdb, 0x07, 0xa4, 0x40,
- 0x73, 0x35, 0x7b, 0x9c, 0x59, 0x82, 0x18, 0xfe, 0xf7, 0xcd, 0x1c, 0x9f,
- 0xbe, 0x9f, 0xdf, 0x00, 0xa2, 0x88, 0xc7, 0x66, 0x97, 0x97, 0x1f, 0xee,
- 0x81, 0xdf, 0xf0, 0x09, 0x7c, 0x03, 0xa0, 0x79, 0xf8, 0x00, 0x1c, 0xb8,
- 0xb8, 0xe1, 0xdb, 0xc0, 0xf3, 0x12, 0x8b, 0x2f, 0xee, 0xaf, 0x8c, 0x32,
- 0x19, 0xd1, 0xed, 0xdb, 0xd9, 0xe2, 0xfa, 0xc3, 0xfd, 0x98, 0xf0, 0x70,
- 0xe7, 0x5b, 0x40, 0x21, 0x2e, 0x49, 0x04, 0x98, 0xdc, 0x04, 0x3f, 0xf1,
- 0x70, 0x3e, 0x35, 0x78, 0xf9, 0x76, 0xf1, 0x16, 0xb6, 0xba, 0x7c, 0x27,
- 0xd7, 0x66, 0x33, 0x56, 0xfe, 0x64, 0xdf, 0xc1, 0x55, 0xbc, 0x99, 0xc3,
- 0x63, 0xb3, 0xab, 0x3f, 0x17, 0xc4, 0x8e, 0xb2, 0x0f, 0x00, 0xb9, 0x10,
- 0x9c, 0xc0, 0xe9, 0x68, 0x05, 0xc1, 0x23, 0x53, 0xdf, 0x2f, 0x17, 0xec,
- 0x58, 0xe2, 0x87, 0x59, 0x02, 0x05, 0x3e, 0x1c, 0xb4, 0x4a, 0xa5, 0x3a,
- 0xac, 0xcc, 0x84, 0x5e, 0xe8, 0xcb, 0xc2, 0x07, 0xeb, 0x8c, 0x90, 0x63,
- 0x13, 0x48, 0x18, 0x35, 0xc3, 0xf5, 0xde, 0x12, 0xa0, 0x58, 0x3a, 0xb1,
- 0x86, 0xea, 0x16, 0x47, 0x6e, 0x70, 0x0b, 0x15, 0xcf, 0xb7, 0x96, 0x2a,
- 0x7b, 0x91, 0xc2, 0x3d, 0x35, 0xed, 0x71, 0xa1, 0xba, 0x41, 0x73, 0xd1,
- 0xbd, 0xb0, 0x77, 0x34, 0x90, 0x1b, 0x48, 0x4e, 0x0f, 0xdb, 0xcc, 0xb2,
- 0x52, 0xf1, 0x22, 0x91, 0x23, 0x1c, 0x0a, 0xb6, 0xaa, 0x5b, 0xee, 0x47,
- 0xc6, 0xf6, 0xaa, 0x2f, 0xf4, 0xa5, 0x0e, 0x6f, 0x30, 0xb2, 0xba, 0xf4,
- 0x6d, 0x8d, 0x53, 0x1c, 0x68, 0x7c, 0x37, 0x1b, 0x23, 0x68, 0x88, 0x57,
- 0xcf, 0x55, 0x9d, 0xc0, 0x7e, 0x24, 0x72, 0x97, 0xb9, 0xc3, 0x5a, 0xce,
- 0x9c, 0x75, 0xa8, 0xc5, 0xf6, 0x96, 0x1c, 0x11, 0xb1, 0xe9, 0x9e, 0xf3,
- 0xf0, 0x07, 0x45, 0x90, 0xb8, 0x1d, 0x5c, 0xc5, 0xd0, 0x8d, 0x87, 0x0b,
- 0x1f, 0xf9, 0x0f, 0xe8, 0x92, 0xee, 0xf9, 0xc4, 0xe7, 0x30, 0xe3, 0x7f,
- 0xef, 0xf8, 0xeb, 0x62, 0x33, 0x42, 0x11, 0x17, 0x15, 0x3e, 0x6a, 0x83,
- 0xc3, 0x27, 0x54, 0x79, 0x37, 0x60, 0xc1, 0x0a, 0x00, 0x3e, 0xc9, 0x63,
- 0xca, 0xd7, 0xa5, 0x6c, 0xa1, 0x26, 0x6e, 0xfc, 0x74, 0x06, 0x8f, 0x3d,
- 0xa7, 0x4f, 0x87, 0x49, 0x9e, 0x4e, 0xce, 0xf1, 0x44, 0xdd, 0xb6, 0x1e,
- 0x34, 0x77, 0x2b, 0x59, 0xc0, 0xc1, 0x8f, 0x3a, 0x9c, 0xa7, 0x92, 0x9f,
- 0xf3, 0x3d, 0x4f, 0xd2, 0xc2, 0xf2, 0xd1, 0x0d, 0xe5, 0x75, 0x42, 0x31,
- 0xb2, 0x64, 0x67, 0xab, 0xde, 0xe4, 0x9f, 0x22, 0x66, 0xab, 0xc8, 0xe9,
- 0xe7, 0xea, 0xf9, 0xab, 0x26, 0xc9, 0x27, 0xb7, 0x93, 0x6f, 0x8f, 0x87,
- 0x2c, 0xa7, 0x4f, 0x1b, 0x1f, 0x1e, 0xa5, 0x52, 0x71, 0x8a, 0xa5, 0xfd,
- 0x85, 0x84, 0xa4, 0xa3, 0x31, 0xab, 0x0d, 0x7c, 0xc1, 0x1d, 0xd0, 0xca,
- 0xd4, 0x05, 0x79, 0x53, 0xbe, 0x58, 0xe3, 0xd1, 0x10, 0xe2, 0xf0, 0xf6,
- 0x56, 0x1f, 0x06, 0x8b, 0x8a, 0x7b, 0x7e, 0xa8, 0x94, 0x2d, 0x69, 0xf6,
- 0xe0, 0xaf, 0x06, 0x61, 0xea, 0x53, 0x87, 0xe6, 0xd7, 0x7b, 0x43, 0xf6,
- 0x97, 0xc4, 0xd4, 0x93, 0xd9, 0x9a, 0xf9, 0x68, 0x6c, 0x5a, 0x89, 0x96,
- 0xf0, 0x1b, 0x8a, 0x26, 0x91, 0x25, 0xae, 0x33, 0x08, 0xc9, 0x35, 0x9a,
- 0xac, 0xe2, 0x17, 0x49, 0x6b, 0xf6, 0x7f, 0xf1, 0x2b, 0x96, 0xbb, 0x96,
- 0x02, 0x23, 0x1c, 0xe5, 0xd2, 0x19, 0x4e, 0xeb, 0x21, 0x4c, 0x18, 0xc6,
- 0xd3, 0xac, 0xd1, 0x44, 0x15, 0xe2, 0xfa, 0x27, 0xa2, 0x93, 0xde, 0xd7,
- 0x49, 0x83, 0xc9, 0xf9, 0xbf, 0xf3, 0xd4, 0xd4, 0x26, 0x4b, 0x2f, 0xbb,
- 0xca, 0xad, 0x31, 0x8f, 0x57, 0x58, 0x1d, 0x91, 0x25, 0x69, 0x9a, 0x8b,
- 0xdf, 0x65, 0x36, 0x96, 0x5a, 0x59, 0x67, 0x97, 0xe7, 0xf6, 0x9f, 0x38,
- 0x23, 0xf1, 0x77, 0xd8, 0x81, 0x96, 0x68, 0xb5, 0x89, 0xf4, 0x77, 0xde,
- 0x97, 0x62, 0x19, 0xbb, 0x58, 0x3c, 0x94, 0x5d, 0xf7, 0xaf, 0xe1, 0x7b,
- 0xe3, 0xd9, 0x25, 0x57, 0xbd, 0xcd, 0xbe, 0xce, 0x2d, 0xdd, 0x6b, 0xc7,
- 0xf3, 0xda, 0x7f, 0xc5, 0x58, 0x2e, 0x7c, 0x62, 0xcd, 0x53, 0xff, 0xe7,
- 0xd7, 0x2d, 0xfa, 0xa9, 0xfa, 0x36, 0x07, 0xf1, 0x83, 0x58, 0xd4, 0xc3,
- 0xbd, 0x70, 0x67, 0x79, 0xef, 0xf3, 0xf9, 0xa1, 0xbb, 0x73, 0x71, 0x1c,
- 0x0f, 0xf1, 0xb8, 0xe1, 0x43, 0x6a, 0x1b, 0xcc, 0x75, 0x69, 0xc7, 0x98,
- 0x7a, 0xb2, 0xc0, 0x5c, 0x70, 0xab, 0x3c, 0x22, 0x19, 0x7d, 0x55, 0xb5,
- 0xda, 0x50, 0x91, 0xa8, 0xe5, 0xf6, 0x5b, 0xfa, 0xe5, 0x6a, 0x5e, 0x4b,
- 0x23, 0xf1, 0x51, 0x66, 0x71, 0x0f, 0xe0, 0xd8, 0x00, 0x03, 0x1c, 0x9f,
- 0xb2, 0xbf, 0x6c, 0xb4, 0xbf, 0x1e, 0x1c, 0xbb, 0x87, 0xb8, 0xc2, 0x5f,
- 0x70, 0xd5, 0x35, 0xad, 0xc6, 0x9e, 0xb4, 0x4e, 0x32, 0xc3, 0x1c, 0x59,
- 0x4a, 0xe5, 0xa1, 0xda, 0x3e, 0xaf, 0xf6, 0xfc, 0xe6, 0xfa, 0x32, 0xf2,
- 0x30, 0x19, 0x93, 0x17, 0x31, 0xcb, 0x1e, 0x23, 0x70, 0x00, 0x16, 0xe5,
- 0x38, 0xfb, 0xcf, 0x4d, 0xdf, 0xef, 0x7e, 0xfd, 0xfe, 0xfb, 0x97, 0x97,
- 0x97, 0x8b, 0xa7, 0x66, 0xb8, 0x68, 0xbb, 0xa7, 0xef, 0xb5, 0x12, 0xe9,
- 0xfb, 0xdf, 0x01, 0xae, 0x19, 0x56, 0x95, 0x62, 0x3f, 0x58, 0x3a, 0x75,
- 0x07, 0xe7, 0xdb, 0xb0, 0x40, 0xa5, 0xd4, 0x0c, 0x7f, 0xc1, 0x9e, 0x3e,
- 0xc7, 0x80, 0x21, 0xe8, 0xae, 0x6d, 0x70, 0xa0, 0x19, 0x7e, 0xc6, 0xa6,
- 0xd8, 0x61, 0x51, 0x15, 0x1c, 0x31, 0xa9, 0x0d, 0x49, 0x66, 0x5d, 0xae,
- 0x8a, 0xf8, 0x91, 0x4d, 0x06, 0x95, 0x3f, 0x8b, 0xfd, 0x95, 0xa0, 0xa8,
- 0x09, 0x5f, 0xf4, 0xdc, 0x47, 0x6c, 0xf1, 0x80, 0x76, 0x2e, 0x66, 0x49,
- 0x86, 0xcc, 0x89, 0xce, 0x65, 0xcd, 0x14, 0xc6, 0xe5, 0xf0, 0x07, 0xe0,
- 0xb9, 0x4e, 0x54, 0xbf, 0x66, 0x70, 0x3c, 0xee, 0xde, 0xa5, 0xe4, 0x08,
- 0x6b, 0xb8, 0xa5, 0x26, 0x58, 0x98, 0x05, 0xf0, 0x6b, 0x42, 0xf1, 0x4b,
- 0x5e, 0x1c, 0x1c, 0xd7, 0xb9, 0xd1, 0x85, 0x9d, 0xe8, 0xc7, 0xdb, 0x28,
- 0x3c, 0xc7, 0x9d, 0x7c, 0xae, 0x28, 0x7d, 0x80, 0x81, 0x73, 0x9b, 0x20,
- 0xf7, 0x9f, 0x9d, 0x09, 0xd9, 0xb7, 0x32, 0x14, 0xac, 0xf3, 0xc7, 0x96,
- 0xf8, 0x63, 0x01, 0x7b, 0x9f, 0xc4, 0xdf, 0x65, 0x94, 0xaa, 0x0c, 0xdc,
- 0xa3, 0x6f, 0x7b, 0x05, 0x67, 0x91, 0xf4, 0x39, 0x19, 0x2e, 0xca, 0x1e,
- 0x4b, 0xd7, 0xf7, 0x52, 0x75, 0x15, 0xfb, 0x8e, 0xf5, 0x93, 0x5b, 0xbf,
- 0x11, 0x11, 0x84, 0x96, 0x88, 0x9f, 0xd4, 0x79, 0x0d, 0x89, 0xdd, 0xc3,
- 0x81, 0x7b, 0x9f, 0x46, 0x68, 0x47, 0x44, 0x12, 0xae, 0x1c, 0xa0, 0xae,
- 0xdd, 0x63, 0x5d, 0x8b, 0x44, 0xce, 0xe3, 0xb7, 0x30, 0xf4, 0xbb, 0x8e,
- 0xae, 0x3b, 0xa7, 0xca, 0x3e, 0xf4, 0x2f, 0x81, 0x63, 0xf9, 0xa3, 0x7b,
- 0x94, 0xfb, 0xc4, 0x39, 0x58, 0x3c, 0x07, 0x4e, 0x05, 0x67, 0xb4, 0xb1,
- 0x26, 0xb1, 0x98, 0x23, 0x0c, 0xf7, 0xc7, 0x39, 0x3b, 0xe1, 0xcb, 0x2f,
- 0x6f, 0x43, 0x65, 0x45, 0x4e, 0xa3, 0x48, 0xf7, 0xd9, 0xc7, 0x45, 0xd9,
- 0x42, 0xc2, 0x5f, 0x88, 0x57, 0x1b, 0xd8, 0x89, 0x3e, 0x15, 0x0e, 0xb8,
- 0x30, 0xdf, 0x60, 0x88, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x0c, 0xd2,
- 0xa8, 0x4c, 0xc3, 0x86, 0x00, 0x00,
- },
- "conf/license/Affero GPL",
- )
-}
-
-func conf_license_apache_v2_license() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0xdc, 0x5a,
- 0xdf, 0x73, 0x1b, 0x47, 0x72, 0x7e, 0xf7, 0x5f, 0x31, 0x41, 0x55, 0x2a,
- 0x64, 0xd5, 0x0a, 0xd2, 0x39, 0x77, 0x49, 0x4e, 0x7e, 0xa2, 0x45, 0xea,
- 0x8c, 0x44, 0x06, 0x55, 0x04, 0x15, 0xc5, 0x8f, 0x83, 0xdd, 0x59, 0x60,
- 0xa2, 0xc5, 0x0e, 0x3c, 0xb3, 0x4b, 0x10, 0x71, 0xf9, 0x7f, 0xcf, 0xd7,
- 0x3d, 0x3f, 0x17, 0x00, 0x65, 0xa5, 0xf2, 0x76, 0x2c, 0xd7, 0x9d, 0x00,
- 0xec, 0xf4, 0xf4, 0xf4, 0x8f, 0xaf, 0xbf, 0xee, 0xd9, 0x9b, 0xbd, 0xac,
- 0xb7, 0x4a, 0x7c, 0xd0, 0xb5, 0xea, 0x9d, 0xfa, 0x4e, 0xbc, 0xfc, 0xf7,
- 0x9f, 0xca, 0x3a, 0x6d, 0x7a, 0xf1, 0xfd, 0xfc, 0x4d, 0x25, 0xfe, 0x5d,
- 0xf6, 0xa3, 0xb4, 0x47, 0xf1, 0xfd, 0x9b, 0x37, 0x7f, 0x7e, 0x71, 0xd1,
- 0x76, 0x18, 0xf6, 0x6f, 0x5f, 0xbf, 0x3e, 0x1c, 0x0e, 0x73, 0xc9, 0xdb,
- 0xcc, 0x8d, 0xdd, 0xbc, 0xee, 0xfc, 0x56, 0xee, 0xf5, 0x77, 0xb4, 0xf0,
- 0xf1, 0xee, 0xe1, 0xe7, 0x95, 0xb8, 0x59, 0xde, 0x8a, 0x77, 0xf7, 0xcb,
- 0xdb, 0xc5, 0xe3, 0xe2, 0x7e, 0xb9, 0x12, 0xef, 0xef, 0x1f, 0xc4, 0xa7,
- 0xd5, 0x5d, 0x25, 0x1e, 0xee, 0x3e, 0x3e, 0xdc, 0xdf, 0x7e, 0x7a, 0x47,
- 0x5f, 0x57, 0xfc, 0xd4, 0xed, 0x62, 0xf5, 0xf8, 0xb0, 0xf8, 0xf1, 0x13,
- 0x7d, 0xc3, 0x02, 0xfe, 0x34, 0x17, 0xb7, 0xaa, 0xd5, 0xbd, 0x1e, 0xa0,
- 0x9c, 0x9b, 0x7f, 0x17, 0xb4, 0x99, 0x85, 0x13, 0xcd, 0x84, 0xdb, 0xca,
- 0xae, 0x13, 0x3b, 0x25, 0x7b, 0x31, 0xe0, 0xa4, 0x83, 0xb2, 0x3b, 0x27,
- 0x64, 0xdf, 0x88, 0xda, 0xf4, 0x8d, 0x5f, 0x25, 0x5a, 0x63, 0xc5, 0xe8,
- 0x54, 0x25, 0xac, 0xda, 0x5b, 0xd3, 0x8c, 0x35, 0x7d, 0x5d, 0x05, 0x51,
- 0xf4, 0x6c, 0xa3, 0xdd, 0x60, 0xf5, 0x7a, 0xa4, 0xef, 0x85, 0x74, 0xa2,
- 0xa1, 0x2d, 0x55, 0x23, 0xd6, 0x47, 0xb1, 0x52, 0xb5, 0x17, 0xf2, 0x27,
- 0xc8, 0xb7, 0x66, 0xdc, 0x6c, 0xc5, 0x5f, 0x85, 0x69, 0xf1, 0x41, 0xe3,
- 0x39, 0x53, 0x8f, 0x3b, 0xd5, 0x0f, 0xa7, 0x7a, 0x19, 0x7b, 0xa6, 0x58,
- 0x6d, 0xf6, 0x47, 0xab, 0x37, 0xdb, 0x41, 0x98, 0x43, 0xaf, 0xac, 0x80,
- 0x4a, 0x58, 0xa8, 0x87, 0xa3, 0x90, 0xe3, 0xb0, 0x35, 0x56, 0xff, 0x0f,
- 0xef, 0x17, 0xe4, 0x5c, 0x5a, 0x31, 0x6c, 0xe5, 0x20, 0xb0, 0xe9, 0xc6,
- 0x4a, 0x2c, 0xec, 0x37, 0xfc, 0x50, 0xb0, 0x43, 0xa1, 0x80, 0xda, 0xc8,
- 0x4e, 0xdc, 0xb1, 0xe8, 0x33, 0x25, 0xc6, 0x9e, 0x0e, 0xc8, 0xda, 0x2b,
- 0x21, 0x6b, 0x96, 0x12, 0xb5, 0x80, 0x19, 0xf0, 0x6c, 0x10, 0x63, 0xf0,
- 0x40, 0x50, 0x50, 0x2b, 0xe7, 0xb7, 0x86, 0x41, 0x07, 0x6b, 0xba, 0x4a,
- 0x48, 0xab, 0xe2, 0x87, 0x8e, 0x95, 0xae, 0xe8, 0x34, 0xf4, 0xed, 0xd8,
- 0x37, 0x58, 0x56, 0x9b, 0xdd, 0xce, 0xf4, 0x41, 0x52, 0x78, 0x50, 0x1c,
- 0xf4, 0xb0, 0xf5, 0x72, 0xfc, 0x86, 0x73, 0xf1, 0xde, 0x58, 0xd6, 0x63,
- 0x3f, 0xda, 0xbd, 0x41, 0xc4, 0x64, 0xab, 0x26, 0x87, 0x47, 0x1f, 0xcd,
- 0x82, 0x94, 0x19, 0x1f, 0xc5, 0x89, 0x2b, 0x7d, 0xed, 0x97, 0x9a, 0x83,
- 0xb2, 0x15, 0xdc, 0x67, 0xe1, 0x25, 0x52, 0x42, 0xf7, 0xfe, 0xdf, 0x95,
- 0x18, 0x8c, 0xa8, 0x25, 0x9c, 0x4e, 0xcf, 0x05, 0x29, 0xfe, 0x27, 0xb6,
- 0x80, 0x15, 0x3b, 0xd9, 0xcb, 0x8d, 0x22, 0xe7, 0xd1, 0xbe, 0x6e, 0xac,
- 0xb7, 0x41, 0xb1, 0x4a, 0x1c, 0xb6, 0x8a, 0x8f, 0x0f, 0xef, 0xf3, 0xbe,
- 0x92, 0x65, 0x97, 0x96, 0x39, 0x68, 0x8a, 0x26, 0x48, 0xb9, 0xd2, 0xd0,
- 0x84, 0xdd, 0xe3, 0xb6, 0x7a, 0x4f, 0x92, 0x5a, 0xdd, 0xc2, 0x9a, 0x7b,
- 0x65, 0x6b, 0x12, 0x7d, 0xf5, 0x97, 0x37, 0xff, 0x78, 0xcd, 0xdb, 0x19,
- 0x98, 0xc7, 0x1b, 0x3e, 0x0a, 0x1a, 0x07, 0x37, 0xc0, 0xea, 0xe4, 0x03,
- 0xb8, 0xc9, 0x2a, 0x17, 0x25, 0x42, 0xe4, 0x5a, 0xf5, 0x30, 0x42, 0xad,
- 0xe1, 0xca, 0x89, 0xf4, 0x42, 0xcf, 0xec, 0xf2, 0x5f, 0xcc, 0x38, 0x13,
- 0x57, 0x58, 0x4b, 0xff, 0xb2, 0xb3, 0xeb, 0xd2, 0xeb, 0xf8, 0x8f, 0x6c,
- 0xf2, 0xa4, 0x9b, 0x91, 0x64, 0x59, 0x51, 0xc6, 0x47, 0x10, 0xa0, 0x9e,
- 0xa1, 0xad, 0x76, 0xa4, 0x08, 0xf4, 0xde, 0x69, 0xe7, 0x38, 0xe0, 0x39,
- 0xce, 0x7c, 0x12, 0xb0, 0x5b, 0xce, 0x42, 0x6d, 0x85, 0xdd, 0x6a, 0xa4,
- 0x20, 0xd2, 0x6b, 0x77, 0x1a, 0x69, 0x7b, 0xab, 0x5a, 0x65, 0x2d, 0x96,
- 0xf3, 0xaf, 0x2d, 0x5b, 0xfc, 0x0b, 0x6d, 0xb1, 0x33, 0x8d, 0xc6, 0xd1,
- 0x24, 0x67, 0x55, 0x74, 0xb0, 0xee, 0xeb, 0x6e, 0x64, 0x53, 0x20, 0x09,
- 0x45, 0x6f, 0x06, 0xd1, 0xe9, 0x9d, 0xa6, 0xdd, 0xe1, 0x47, 0x67, 0xda,
- 0xe1, 0x40, 0xe1, 0xe5, 0x78, 0x43, 0x38, 0xa5, 0x81, 0xf5, 0x63, 0xee,
- 0xb1, 0xa0, 0x20, 0xc6, 0x3f, 0x50, 0xc5, 0xfc, 0x6f, 0xf5, 0x66, 0xb4,
- 0xfc, 0x3b, 0xdc, 0xd2, 0xa9, 0x02, 0x3e, 0xee, 0xd7, 0xff, 0x8d, 0x50,
- 0x38, 0x57, 0x5d, 0xf6, 0x47, 0xff, 0x1d, 0xdc, 0x31, 0x76, 0x9c, 0x1f,
- 0xad, 0x35, 0x3b, 0xfc, 0x58, 0x6f, 0x65, 0x0f, 0xad, 0x63, 0x82, 0x20,
- 0x2a, 0x7a, 0x47, 0x4f, 0xca, 0x18, 0x50, 0xfc, 0x4d, 0x17, 0x3e, 0xb6,
- 0x42, 0x0a, 0x6f, 0x1e, 0x16, 0x57, 0x4d, 0x0f, 0x18, 0x64, 0x9c, 0x1c,
- 0x13, 0x69, 0xb3, 0xd7, 0x94, 0x50, 0x86, 0x95, 0x0b, 0xc7, 0xdc, 0x20,
- 0x12, 0x70, 0x06, 0x7c, 0x3d, 0x39, 0x70, 0x89, 0x5e, 0x38, 0xe9, 0x93,
- 0x47, 0x6f, 0x47, 0x72, 0x7c, 0xee, 0xee, 0x54, 0xa3, 0xa5, 0x18, 0x8e,
- 0xfb, 0xf2, 0xd8, 0x9f, 0x8d, 0xfd, 0x72, 0x06, 0x0a, 0x07, 0x7c, 0xc9,
- 0x1a, 0x33, 0x0e, 0x51, 0xa4, 0xe5, 0x14, 0xd0, 0x7d, 0x3c, 0x46, 0x4a,
- 0x00, 0x6f, 0xba, 0x70, 0xac, 0x9d, 0x6c, 0x00, 0x24, 0x4f, 0x52, 0x77,
- 0x72, 0xdd, 0xc5, 0xfc, 0x2f, 0x70, 0xa9, 0x22, 0x34, 0xa5, 0x00, 0xac,
- 0x65, 0x08, 0x25, 0x99, 0x70, 0x21, 0xa2, 0x1b, 0xcc, 0x80, 0x87, 0x13,
- 0xbc, 0x79, 0x4b, 0xe1, 0x61, 0xcd, 0x66, 0x95, 0xc3, 0x40, 0xb5, 0x85,
- 0x2d, 0x14, 0xb5, 0x0d, 0x22, 0xae, 0x70, 0x00, 0xf5, 0x2c, 0x77, 0x7b,
- 0xec, 0x8c, 0x85, 0x80, 0x76, 0x84, 0xb9, 0x5f, 0x48, 0x4f, 0xde, 0xec,
- 0xf7, 0x0a, 0x3b, 0x3f, 0x23, 0x99, 0x3a, 0x73, 0xb8, 0xce, 0x56, 0xb8,
- 0x55, 0x56, 0x3f, 0xc1, 0x8a, 0x4f, 0x4a, 0x90, 0x41, 0xdc, 0xec, 0x34,
- 0x02, 0x68, 0x8f, 0xcb, 0x36, 0x08, 0xa7, 0x0f, 0x92, 0xbc, 0x0d, 0xa2,
- 0xe2, 0x6b, 0xe9, 0xc8, 0x79, 0x3d, 0xa7, 0x62, 0x43, 0x7b, 0x50, 0xf4,
- 0x23, 0x7a, 0x3c, 0x56, 0xd1, 0x56, 0xec, 0x2e, 0xca, 0x85, 0xc3, 0x56,
- 0xd7, 0xdb, 0x02, 0x0c, 0xe0, 0xac, 0x01, 0x35, 0x00, 0x99, 0x69, 0xd5,
- 0x93, 0x66, 0x57, 0x52, 0x14, 0xc3, 0x34, 0x21, 0x4f, 0x84, 0x82, 0x85,
- 0x8d, 0x8d, 0x9f, 0x20, 0x22, 0xb8, 0xb9, 0xcc, 0xa6, 0x20, 0x8c, 0xaa,
- 0x9c, 0x72, 0x88, 0x14, 0xb6, 0xbe, 0xc4, 0x66, 0xa6, 0xe3, 0xa4, 0xc0,
- 0x32, 0xbd, 0xd1, 0x3d, 0x76, 0x39, 0xf7, 0xf9, 0x39, 0x1e, 0x47, 0x9c,
- 0x6a, 0x27, 0xe9, 0x5f, 0x89, 0x53, 0xf3, 0x05, 0xeb, 0x51, 0x34, 0x07,
- 0xdf, 0xb1, 0xf8, 0x50, 0x35, 0xac, 0xda, 0x49, 0x9d, 0xf2, 0x53, 0xed,
- 0xa5, 0xe5, 0x48, 0x21, 0xbb, 0xf0, 0x31, 0x76, 0xca, 0xaa, 0xee, 0x88,
- 0x3c, 0xe8, 0xbf, 0xb0, 0xe1, 0xd6, 0x88, 0x16, 0x8a, 0x93, 0x5e, 0xee,
- 0xd4, 0x75, 0x74, 0xba, 0x06, 0x10, 0xd9, 0x56, 0xd6, 0x5c, 0x24, 0xaa,
- 0xa2, 0x46, 0x26, 0xa3, 0x9e, 0x29, 0x45, 0xd6, 0x51, 0xa6, 0xcd, 0x5e,
- 0x7f, 0x47, 0x50, 0x1e, 0x6a, 0xfc, 0x45, 0x8f, 0x9f, 0xe6, 0x40, 0x4a,
- 0xd9, 0x62, 0xbf, 0x64, 0xc0, 0x90, 0x70, 0xb1, 0x96, 0x26, 0x3d, 0x48,
- 0xd8, 0xc4, 0x27, 0x1c, 0xc3, 0x4d, 0x60, 0x22, 0x51, 0x92, 0xf1, 0xb6,
- 0xe1, 0x55, 0xf8, 0xfd, 0x25, 0xe5, 0xab, 0x22, 0x29, 0x06, 0x42, 0x7d,
- 0x83, 0xad, 0xbb, 0x08, 0xdb, 0x6e, 0x5c, 0x03, 0x3b, 0x02, 0x78, 0x44,
- 0xde, 0xc1, 0xd1, 0xc5, 0x9a, 0xb3, 0x7a, 0x21, 0x15, 0x78, 0x23, 0xc6,
- 0xf1, 0x33, 0x5a, 0x11, 0xbd, 0xcc, 0xe5, 0xee, 0xab, 0xd5, 0xa2, 0x24,
- 0x2a, 0x84, 0xca, 0xbc, 0x3d, 0xc5, 0xfb, 0x5a, 0xc1, 0x98, 0x2d, 0x4c,
- 0xf1, 0x32, 0x79, 0xf9, 0xb6, 0x6a, 0x2f, 0x66, 0xe9, 0x4c, 0xb3, 0x20,
- 0xcb, 0xd7, 0xfb, 0x04, 0xcb, 0x58, 0xa4, 0x3a, 0x24, 0xa0, 0x35, 0x00,
- 0xe3, 0x8a, 0xbc, 0xb0, 0x96, 0x1d, 0xc7, 0xd1, 0xc1, 0xd2, 0xba, 0x9e,
- 0xc9, 0xc7, 0xd8, 0x07, 0xeb, 0x0b, 0xca, 0x82, 0xd2, 0xe8, 0x2a, 0x1b,
- 0x8a, 0xec, 0x34, 0xb8, 0x9c, 0x2c, 0x6c, 0x7f, 0x57, 0x7d, 0xb5, 0x14,
- 0x25, 0xec, 0x2a, 0xf7, 0xc0, 0x7f, 0x59, 0x27, 0x20, 0xa2, 0xee, 0x68,
- 0x71, 0x07, 0x4a, 0x09, 0x69, 0x45, 0xc9, 0x4a, 0x54, 0xc8, 0x1d, 0xdd,
- 0xa0, 0x76, 0xae, 0x84, 0x70, 0xd4, 0xdc, 0x51, 0x51, 0x09, 0xa9, 0xb9,
- 0x46, 0x86, 0x27, 0xbc, 0xfb, 0xa9, 0xf2, 0x79, 0xb6, 0x92, 0xb8, 0x56,
- 0x69, 0xf4, 0xaa, 0x80, 0x91, 0x49, 0x14, 0x14, 0xd6, 0x26, 0xbb, 0x81,
- 0xe3, 0xd6, 0xa3, 0xe3, 0x2a, 0xcf, 0x3b, 0xee, 0x18, 0x2f, 0x03, 0x8d,
- 0xfc, 0xcc, 0x88, 0x97, 0x4b, 0x93, 0x7a, 0x8e, 0x46, 0x98, 0x9e, 0x35,
- 0xc6, 0x23, 0x8e, 0xe2, 0xf6, 0xba, 0x1e, 0xcd, 0xe8, 0x90, 0xbc, 0x3b,
- 0x69, 0xbf, 0x10, 0xf4, 0xd9, 0xcc, 0x8e, 0x22, 0xe5, 0x52, 0x4e, 0x6f,
- 0x7a, 0xc6, 0x7e, 0x84, 0x22, 0xf9, 0x88, 0x0d, 0x7b, 0x31, 0x12, 0x09,
- 0xac, 0x66, 0x4b, 0xd8, 0x5b, 0x8a, 0x32, 0x57, 0xe7, 0xb3, 0xf3, 0x14,
- 0x3e, 0xe1, 0xd7, 0xe9, 0xd8, 0x31, 0x03, 0xff, 0x90, 0xf2, 0x94, 0x06,
- 0x24, 0x7c, 0xdc, 0x9d, 0x6c, 0x2a, 0xb6, 0x50, 0x66, 0xad, 0x10, 0x4f,
- 0xa0, 0x8c, 0x8a, 0x91, 0x1c, 0x4a, 0x97, 0xfb, 0xe4, 0x24, 0x74, 0xea,
- 0xd7, 0x11, 0xf1, 0xd3, 0xd1, 0xb6, 0xb5, 0x81, 0xbd, 0x7d, 0xb9, 0x26,
- 0xc2, 0x5b, 0xa4, 0x9f, 0x07, 0xa2, 0xef, 0xe7, 0xe2, 0x6f, 0x44, 0xab,
- 0x68, 0xdb, 0x77, 0xe9, 0xf8, 0x91, 0x59, 0x89, 0xd5, 0xe8, 0x8b, 0x6b,
- 0x88, 0xd5, 0x8b, 0xcd, 0x4c, 0x91, 0x66, 0x25, 0x2a, 0x2b, 0x54, 0x49,
- 0x51, 0x18, 0x48, 0x10, 0x84, 0x40, 0x67, 0x66, 0x71, 0xcc, 0x0b, 0x40,
- 0x0e, 0x71, 0x4a, 0x30, 0xbc, 0xbd, 0x1a, 0x60, 0x99, 0x18, 0x7e, 0x80,
- 0xbe, 0xae, 0x39, 0x68, 0xe2, 0x1a, 0xbd, 0xe9, 0x5f, 0xb1, 0xe7, 0x1d,
- 0x4e, 0x4c, 0x1f, 0x5f, 0x81, 0xf5, 0xd8, 0x0d, 0x35, 0x4e, 0xe6, 0x28,
- 0xbb, 0xe1, 0xf8, 0xaa, 0xb5, 0x0a, 0x9f, 0x34, 0x88, 0xdd, 0x93, 0xa9,
- 0x09, 0xc8, 0xcf, 0xaa, 0x79, 0xe8, 0xff, 0x68, 0xc3, 0xd8, 0x6d, 0x61,
- 0x05, 0x72, 0x6c, 0x4f, 0x71, 0x7c, 0x86, 0x74, 0x19, 0xce, 0xf7, 0xe3,
- 0x1a, 0x6b, 0x61, 0x45, 0x04, 0xea, 0xbe, 0x93, 0x08, 0xf4, 0xf4, 0x0d,
- 0x74, 0xf6, 0xa5, 0xd6, 0xf1, 0x37, 0x81, 0x58, 0x94, 0x7d, 0x5b, 0x49,
- 0xf3, 0x13, 0x16, 0x33, 0x59, 0x3e, 0xdb, 0xf1, 0x42, 0x39, 0x67, 0x6c,
- 0xf1, 0x0e, 0xfa, 0xe7, 0xc2, 0x41, 0x1f, 0x25, 0x81, 0xee, 0xdf, 0x81,
- 0x77, 0xae, 0xb0, 0x4c, 0xed, 0x07, 0x4a, 0x30, 0xb4, 0x1c, 0x43, 0xa4,
- 0x48, 0x50, 0xd0, 0xf9, 0x86, 0xe8, 0x5a, 0xec, 0xfd, 0x59, 0x0b, 0xef,
- 0x81, 0xae, 0x43, 0xd8, 0x56, 0x3e, 0x29, 0x66, 0x79, 0x51, 0x21, 0xee,
- 0xa3, 0x4d, 0xdb, 0x12, 0xcf, 0x43, 0x11, 0x50, 0x1d, 0xe0, 0xd7, 0xff,
- 0x2f, 0x10, 0xc5, 0xd8, 0xc1, 0x3b, 0x26, 0xe1, 0x40, 0x20, 0xca, 0x81,
- 0x15, 0x32, 0xcc, 0xc4, 0x93, 0x91, 0x09, 0xbc, 0x8f, 0xe2, 0xae, 0x72,
- 0xbf, 0xef, 0xa8, 0xdd, 0x34, 0x3d, 0x9c, 0xce, 0x56, 0x26, 0xec, 0x0a,
- 0xaa, 0xd5, 0x9d, 0xd4, 0xb0, 0xb7, 0x7f, 0xb6, 0x38, 0x1c, 0xac, 0xc8,
- 0x42, 0x4a, 0xeb, 0x26, 0xdc, 0xec, 0x91, 0xbd, 0xce, 0x49, 0xab, 0x39,
- 0x3b, 0x5b, 0x0b, 0xf4, 0x89, 0x1d, 0x8d, 0xd2, 0xb1, 0xf6, 0x95, 0x89,
- 0x7f, 0xe5, 0xae, 0xd1, 0x06, 0x9b, 0x5e, 0x85, 0x8a, 0x08, 0xf8, 0x03,
- 0x23, 0x49, 0xac, 0x9e, 0x97, 0x9d, 0x2e, 0x88, 0x07, 0xf2, 0x1d, 0x6e,
- 0xa8, 0xb6, 0x50, 0xdf, 0x93, 0xbc, 0xa9, 0x72, 0x61, 0x8b, 0x03, 0xb9,
- 0x22, 0xd6, 0xba, 0xb9, 0x58, 0xb4, 0xe4, 0xff, 0xd4, 0x0b, 0x39, 0x20,
- 0x15, 0xc5, 0x74, 0x72, 0xca, 0xa0, 0x37, 0x5e, 0x05, 0xb9, 0x91, 0xf4,
- 0x33, 0x83, 0x5c, 0x68, 0xdc, 0xaf, 0x72, 0xc1, 0x4a, 0xdc, 0xda, 0x1a,
- 0xe7, 0x5e, 0xb1, 0xc1, 0xe8, 0x18, 0xb5, 0x19, 0x89, 0x3f, 0xf9, 0xcf,
- 0xf0, 0xbc, 0x14, 0x9d, 0x3c, 0xb8, 0x51, 0x0f, 0x74, 0xd4, 0x4e, 0x6d,
- 0x7c, 0x11, 0x80, 0xc5, 0xa2, 0xf2, 0x99, 0x13, 0x9c, 0xa0, 0xe2, 0xd7,
- 0x00, 0x8e, 0x6b, 0x82, 0x57, 0xdc, 0x85, 0x56, 0x3b, 0xcb, 0xa9, 0xb3,
- 0x73, 0x8e, 0xf1, 0x58, 0xd1, 0x1f, 0x3b, 0x66, 0xaa, 0x10, 0xe3, 0xa9,
- 0xd8, 0x34, 0x12, 0x23, 0x65, 0x8a, 0xcd, 0x68, 0xc8, 0x94, 0xd8, 0x68,
- 0xe4, 0x1c, 0x0b, 0x25, 0x2f, 0xb2, 0x2a, 0x5f, 0x1d, 0x28, 0x45, 0xc9,
- 0x7b, 0x31, 0x56, 0xa4, 0x8b, 0x84, 0xad, 0xc1, 0x97, 0x31, 0xf8, 0x92,
- 0x75, 0x21, 0x8d, 0xfa, 0xc4, 0xc6, 0x43, 0xc1, 0x9f, 0xe7, 0xe2, 0x41,
- 0x95, 0x93, 0xa1, 0x39, 0x6f, 0xbd, 0x93, 0xc7, 0x8c, 0x6c, 0xa7, 0x28,
- 0x04, 0x1c, 0xd4, 0x91, 0xdb, 0x4c, 0xf0, 0xe8, 0x2b, 0x2c, 0x8f, 0x5d,
- 0x42, 0xb4, 0x11, 0x9b, 0x8d, 0x00, 0x39, 0x8e, 0x23, 0x62, 0x34, 0xf8,
- 0x7f, 0x93, 0x2a, 0xf2, 0xb4, 0x6d, 0xf6, 0x25, 0xfc, 0x05, 0x24, 0xab,
- 0x72, 0x2b, 0xc4, 0x06, 0xc9, 0xa1, 0xb5, 0x53, 0xca, 0x7b, 0xb9, 0x35,
- 0x1d, 0x7a, 0x22, 0x5f, 0xdf, 0x23, 0x76, 0xbd, 0xfd, 0x2e, 0xf5, 0x55,
- 0xd7, 0xfe, 0xa4, 0x23, 0x22, 0x6d, 0x43, 0xfa, 0x92, 0x7a, 0xbe, 0xdf,
- 0x80, 0x5b, 0x35, 0x8e, 0x48, 0xa0, 0x55, 0x52, 0xdf, 0xd4, 0x1d, 0xd2,
- 0xdf, 0xd9, 0x41, 0x25, 0xd7, 0x87, 0xd3, 0x4e, 0xe2, 0x07, 0x2e, 0xa3,
- 0x71, 0xcf, 0x75, 0xb1, 0xa7, 0x1f, 0xdc, 0x64, 0x2a, 0x4d, 0x7d, 0x14,
- 0xf5, 0xef, 0x7e, 0xa8, 0x63, 0x29, 0x84, 0xd0, 0x3e, 0xe8, 0x9e, 0xe2,
- 0xc4, 0x77, 0x8f, 0xae, 0xd8, 0x9e, 0x20, 0x2e, 0x85, 0x34, 0xc9, 0xa4,
- 0xd6, 0x7d, 0xc3, 0xc6, 0x50, 0x5e, 0xce, 0x74, 0xe7, 0xba, 0xd8, 0xd9,
- 0xaa, 0x01, 0x09, 0x56, 0x45, 0xde, 0x5c, 0xb4, 0xf0, 0xdc, 0x1d, 0x40,
- 0xa3, 0xd3, 0xc3, 0x15, 0x1b, 0xa7, 0x0d, 0x73, 0x40, 0x54, 0x94, 0x61,
- 0xb9, 0x3a, 0x56, 0x21, 0xba, 0x2b, 0x82, 0xc5, 0x46, 0x11, 0x6f, 0xaa,
- 0x0a, 0x32, 0xc1, 0x21, 0x3a, 0xe4, 0x74, 0x0b, 0x67, 0xf3, 0x23, 0x88,
- 0x0b, 0xfa, 0x9c, 0x42, 0x2a, 0xfd, 0x65, 0xe6, 0xe6, 0xd1, 0x33, 0xca,
- 0x60, 0xe5, 0x1a, 0xc3, 0x84, 0x16, 0x55, 0x86, 0x8e, 0x49, 0xe6, 0xf4,
- 0x19, 0x67, 0x87, 0x5c, 0xb8, 0xfc, 0x49, 0xce, 0x4b, 0xf5, 0xd4, 0x68,
- 0xcd, 0x35, 0x81, 0x56, 0xf2, 0x7f, 0x68, 0xfc, 0xc8, 0xd5, 0xb3, 0xe5,
- 0xfd, 0xe3, 0xe2, 0xdd, 0xdd, 0x0c, 0xc9, 0xf7, 0x3c, 0xb0, 0xbd, 0x29,
- 0xed, 0xc2, 0x1e, 0x44, 0xb9, 0x8b, 0x7d, 0xca, 0xec, 0x2a, 0x20, 0xe0,
- 0x42, 0xa6, 0x9c, 0x59, 0x96, 0xfd, 0x55, 0x88, 0x8a, 0xad, 0xa7, 0x84,
- 0x0f, 0x65, 0xc3, 0x3d, 0x66, 0x0e, 0x3a, 0x75, 0xd1, 0xac, 0x04, 0x4a,
- 0x92, 0xe6, 0xbc, 0x85, 0x98, 0x00, 0x6a, 0x8c, 0x0c, 0xfe, 0x20, 0x7c,
- 0x84, 0xea, 0x5b, 0xec, 0x5a, 0x88, 0xb9, 0x6c, 0xe1, 0x8b, 0x76, 0xe5,
- 0x60, 0x83, 0x8c, 0x4e, 0x49, 0x47, 0xed, 0x54, 0x39, 0xa5, 0x0f, 0x4b,
- 0x72, 0xb6, 0x82, 0x18, 0x61, 0xd3, 0xb7, 0x51, 0x4d, 0x19, 0x75, 0xcc,
- 0xb6, 0xce, 0x16, 0x9a, 0x44, 0x95, 0xfb, 0xaa, 0x0e, 0x3f, 0x94, 0x60,
- 0x3e, 0x09, 0xb2, 0x32, 0xaf, 0xa7, 0x03, 0x28, 0xa1, 0xdb, 0x8c, 0x33,
- 0x54, 0x32, 0x37, 0xb9, 0x02, 0x9e, 0xcb, 0x37, 0xb6, 0x3a, 0xb7, 0xb2,
- 0x8c, 0x5c, 0xaf, 0x98, 0x72, 0x85, 0xde, 0xe0, 0x82, 0x95, 0xda, 0x93,
- 0x4c, 0x61, 0x02, 0x81, 0x0e, 0xd0, 0x3b, 0x0b, 0x02, 0x6d, 0xf3, 0x8a,
- 0x0e, 0x79, 0x4c, 0xbe, 0xe9, 0x69, 0x3e, 0x87, 0x86, 0x99, 0x88, 0x85,
- 0x92, 0x68, 0x42, 0x1f, 0xb7, 0xbe, 0x0b, 0x23, 0xfc, 0x3a, 0x37, 0x73,
- 0xe1, 0x6f, 0x26, 0x0f, 0xbe, 0x95, 0x4e, 0x43, 0x3e, 0xf4, 0x10, 0xb9,
- 0x79, 0x25, 0x86, 0x32, 0x55, 0x27, 0xe4, 0x16, 0x23, 0xd6, 0x71, 0x32,
- 0x9b, 0x4f, 0x65, 0x43, 0x36, 0x0d, 0xfd, 0xdb, 0x52, 0xbf, 0x53, 0x46,
- 0x64, 0x21, 0x25, 0xaa, 0x1e, 0x2c, 0xf4, 0x2d, 0x99, 0x50, 0x79, 0xeb,
- 0x3b, 0x38, 0xa2, 0x3c, 0x13, 0xf7, 0x53, 0x34, 0xde, 0x68, 0x1a, 0xd5,
- 0x37, 0xe3, 0x2e, 0xd2, 0xd6, 0x49, 0xc4, 0x44, 0x60, 0xf1, 0xfd, 0x5f,
- 0x74, 0xe7, 0x29, 0xa6, 0xb1, 0x81, 0xe3, 0x10, 0x03, 0x66, 0xb8, 0x98,
- 0x4c, 0x3c, 0xad, 0x42, 0xcf, 0xe4, 0x79, 0x80, 0x1d, 0x4f, 0xe3, 0xcf,
- 0x1b, 0xe6, 0xa5, 0x7b, 0x8b, 0x8b, 0x26, 0xca, 0x5d, 0x05, 0xd3, 0x56,
- 0x1e, 0xd6, 0x7b, 0x02, 0x70, 0x32, 0xf8, 0x2a, 0x5c, 0x41, 0x42, 0xc2,
- 0x39, 0x4a, 0x95, 0x69, 0x24, 0xa7, 0x89, 0xb5, 0x4e, 0x58, 0xee, 0x05,
- 0x06, 0x9f, 0x47, 0x7b, 0x17, 0xae, 0x8c, 0xbc, 0x98, 0xe2, 0xae, 0xc8,
- 0xb4, 0x17, 0xb4, 0xa9, 0x72, 0xda, 0xb4, 0xdc, 0x2c, 0x1e, 0x5f, 0x68,
- 0x45, 0xca, 0xe9, 0x5c, 0x4a, 0x25, 0x96, 0x47, 0x5b, 0x17, 0xd3, 0xbc,
- 0xac, 0xc0, 0xd9, 0x6d, 0xd5, 0xa4, 0x0a, 0x27, 0xd6, 0x4d, 0xb3, 0x64,
- 0xa6, 0xd2, 0x14, 0x47, 0x93, 0xb1, 0x4c, 0xea, 0x54, 0x4e, 0x3a, 0x81,
- 0x89, 0x43, 0xfe, 0xc2, 0xcd, 0x4e, 0xb8, 0x09, 0xf0, 0xbd, 0x6a, 0x66,
- 0x81, 0x6e, 0x2e, 0x3e, 0xf5, 0xa8, 0xa2, 0x8e, 0x9d, 0xa6, 0x9e, 0xb1,
- 0x51, 0xad, 0xa9, 0xfd, 0x65, 0x89, 0xc5, 0x05, 0x49, 0x9a, 0x6f, 0x1c,
- 0x4f, 0x59, 0x64, 0x31, 0xcc, 0x2a, 0xc6, 0x58, 0x2f, 0x8e, 0xae, 0x32,
- 0xd3, 0xa7, 0x1d, 0x4f, 0x07, 0x39, 0x9e, 0xea, 0xad, 0xcb, 0xe9, 0xf3,
- 0xff, 0xa5, 0x35, 0x0b, 0x34, 0x8b, 0xd5, 0x2c, 0x02, 0xc6, 0x8b, 0xf0,
- 0xd4, 0xb5, 0x89, 0xb7, 0x8f, 0x7e, 0xfd, 0xd2, 0x0c, 0xb4, 0x28, 0xdd,
- 0xde, 0x70, 0x7d, 0x59, 0x1b, 0xdf, 0x94, 0x51, 0xda, 0x6e, 0xb8, 0xbd,
- 0xa3, 0x32, 0xc2, 0xaa, 0xb9, 0x11, 0xe5, 0xc0, 0xa9, 0x46, 0xf9, 0x8b,
- 0x20, 0x4a, 0x83, 0xc2, 0x25, 0x61, 0x23, 0xcf, 0x2e, 0xfc, 0x80, 0x14,
- 0x56, 0x4c, 0x2d, 0xd1, 0x06, 0x3d, 0x1d, 0x07, 0xfe, 0x31, 0x64, 0x08,
- 0x77, 0x64, 0xea, 0x59, 0xd5, 0x05, 0xc4, 0x33, 0xf0, 0x26, 0x83, 0x58,
- 0xb5, 0x91, 0xd6, 0xdf, 0x2b, 0x9d, 0xf6, 0x1e, 0xe1, 0x2e, 0xe0, 0x5f,
- 0x00, 0x85, 0x91, 0x80, 0x38, 0x82, 0xc5, 0x82, 0x47, 0x37, 0x86, 0x91,
- 0x73, 0xf0, 0x94, 0xbb, 0xb8, 0x11, 0x22, 0xc3, 0x87, 0x0b, 0x35, 0x4f,
- 0x5f, 0xe2, 0x35, 0x86, 0xdc, 0xd1, 0xdc, 0x2c, 0x31, 0x1a, 0x9a, 0x7a,
- 0x29, 0xfb, 0x44, 0x33, 0xfd, 0xf0, 0x11, 0x3a, 0x85, 0x18, 0xf6, 0x0f,
- 0xc7, 0xa0, 0x8d, 0x1a, 0x57, 0x79, 0xea, 0x14, 0xda, 0x54, 0xab, 0x7e,
- 0x1d, 0x75, 0xb8, 0x3d, 0xa2, 0x82, 0xee, 0xe0, 0x13, 0x2a, 0xe9, 0xec,
- 0x52, 0x14, 0x7e, 0xb3, 0xa3, 0xeb, 0x69, 0xd2, 0x06, 0x56, 0x06, 0xef,
- 0xa8, 0x71, 0xc0, 0xe0, 0x8a, 0xd4, 0x74, 0xd0, 0xa4, 0xf6, 0x6c, 0x3e,
- 0x1b, 0xb3, 0x29, 0xfa, 0x2d, 0x54, 0x83, 0x0b, 0x25, 0xc0, 0x5b, 0xea,
- 0x5f, 0xe7, 0xe2, 0x56, 0x3b, 0x6e, 0x9d, 0xe8, 0xd2, 0xb6, 0x15, 0x9f,
- 0xc1, 0x3f, 0x61, 0x97, 0x63, 0x4a, 0x82, 0xa4, 0xea, 0xfa, 0xe8, 0x1b,
- 0x58, 0xee, 0xbc, 0xa9, 0xc5, 0xca, 0x30, 0xc0, 0x5e, 0xe4, 0xe6, 0x25,
- 0x4f, 0xc1, 0xaa, 0xec, 0xb0, 0x90, 0xfb, 0x2e, 0xab, 0x7a, 0x45, 0xba,
- 0xd2, 0xd0, 0xe0, 0xb4, 0x45, 0x2d, 0x9f, 0xa6, 0xf1, 0xe5, 0xc4, 0xb9,
- 0xd7, 0x34, 0xd7, 0x02, 0xe4, 0xcf, 0x6e, 0x56, 0x62, 0xb1, 0x9a, 0x89,
- 0x1f, 0x6f, 0x56, 0x8b, 0x55, 0x34, 0xee, 0xe7, 0xc5, 0xe3, 0x4f, 0xf7,
- 0x9f, 0x1e, 0xc5, 0xe7, 0x9b, 0x87, 0x87, 0x9b, 0xe5, 0xe3, 0xe2, 0x6e,
- 0x25, 0xee, 0x1f, 0xca, 0x6b, 0xf9, 0xfb, 0xf7, 0xe2, 0x66, 0xf9, 0x8b,
- 0xf8, 0x8f, 0xc5, 0xf2, 0x16, 0x74, 0x47, 0xfb, 0x1b, 0xe0, 0x67, 0x9a,
- 0x8e, 0xba, 0x7c, 0x12, 0xcd, 0xb8, 0xd2, 0x14, 0x63, 0xd2, 0x9c, 0x41,
- 0x3c, 0x27, 0x95, 0x11, 0xa7, 0x8e, 0x68, 0x72, 0xd9, 0x54, 0xdc, 0x10,
- 0xd9, 0x73, 0x88, 0x85, 0x31, 0x1f, 0x17, 0x8f, 0x1f, 0xee, 0x2a, 0x58,
- 0x7d, 0xf9, 0x6a, 0xb1, 0x7c, 0xff, 0xb0, 0x58, 0xfe, 0xed, 0xee, 0xe7,
- 0xbb, 0xe5, 0x63, 0x25, 0x7e, 0xbe, 0x7b, 0x78, 0xf7, 0x13, 0xb4, 0xbc,
- 0xf9, 0x71, 0xf1, 0x61, 0xf1, 0xf8, 0x0b, 0x87, 0xd0, 0xfb, 0xc5, 0xe3,
- 0xf2, 0x6e, 0xe5, 0x5f, 0x1f, 0xb8, 0x09, 0x32, 0x3e, 0xde, 0x3c, 0xc0,
- 0x61, 0x9f, 0x3e, 0xdc, 0x3c, 0x88, 0x8f, 0x9f, 0x1e, 0x3e, 0xde, 0xaf,
- 0xee, 0x7c, 0xb5, 0xf5, 0xb7, 0x85, 0x1d, 0xdd, 0x2c, 0x40, 0xff, 0x3d,
- 0x36, 0xd5, 0x7c, 0xeb, 0xc0, 0x37, 0x33, 0xbe, 0x2b, 0x9c, 0x86, 0x0b,
- 0x3c, 0x67, 0xcd, 0xde, 0x6a, 0xa2, 0xe7, 0x7c, 0xe0, 0x16, 0xd1, 0x45,
- 0x8f, 0x70, 0xfc, 0x65, 0xc4, 0x2d, 0xe6, 0xa5, 0x7e, 0xda, 0xe8, 0x1c,
- 0x38, 0x11, 0x1d, 0x37, 0xc2, 0xb5, 0x76, 0x8c, 0xec, 0xce, 0xd4, 0x3a,
- 0xb5, 0xc9, 0x1e, 0xd4, 0xc3, 0x3d, 0x2b, 0x4f, 0x63, 0xcb, 0x8b, 0xd6,
- 0xf3, 0x66, 0xd6, 0xc7, 0xde, 0xbf, 0xcd, 0xf1, 0x39, 0x9a, 0x94, 0x16,
- 0x7d, 0xd0, 0x72, 0xad, 0x3b, 0xbe, 0x3c, 0x5f, 0x50, 0xe5, 0x15, 0xa0,
- 0x3f, 0xfd, 0xc0, 0x7a, 0x78, 0x19, 0xf8, 0xaa, 0xe3, 0x61, 0x27, 0x74,
- 0x44, 0xa7, 0x5d, 0x8c, 0x5a, 0xe2, 0x4d, 0x16, 0x02, 0x68, 0x28, 0x47,
- 0x06, 0xbd, 0xda, 0x74, 0x1a, 0xec, 0xab, 0x56, 0xd7, 0x55, 0xba, 0xed,
- 0xae, 0x26, 0xa3, 0xdc, 0x34, 0xf9, 0xf9, 0xc3, 0x78, 0xbf, 0xf2, 0x44,
- 0x81, 0x66, 0xfa, 0x9d, 0x5e, 0x33, 0xa1, 0x63, 0xe5, 0x36, 0x34, 0x8f,
- 0x48, 0xf7, 0x16, 0x71, 0xcb, 0x81, 0xde, 0x40, 0x70, 0x7c, 0x3b, 0x7e,
- 0x39, 0x3f, 0x3c, 0x7a, 0x4e, 0xca, 0x07, 0x0d, 0x65, 0xa2, 0xcb, 0x3a,
- 0xcd, 0x1b, 0x87, 0x89, 0x00, 0xbb, 0x56, 0xee, 0xe4, 0x66, 0x3a, 0xc3,
- 0xa7, 0xd5, 0xf1, 0x95, 0x80, 0xfc, 0x72, 0x80, 0xdb, 0x2b, 0xba, 0x5b,
- 0x2f, 0x6e, 0x9f, 0x91, 0x50, 0x20, 0xb6, 0xfe, 0x2a, 0x81, 0x08, 0x8c,
- 0x9f, 0xe9, 0xd2, 0x85, 0x5c, 0x10, 0x1a, 0x11, 0x9a, 0x66, 0x6e, 0xd0,
- 0x9b, 0xc6, 0xd5, 0xd6, 0xdf, 0x99, 0x53, 0x15, 0x4f, 0xb5, 0x9a, 0x6e,
- 0x8d, 0x4f, 0x1b, 0x5d, 0xb6, 0xe6, 0x98, 0x30, 0x66, 0xf4, 0xdf, 0xe8,
- 0x3e, 0x38, 0xb3, 0xc0, 0xd5, 0x72, 0x62, 0x70, 0xf5, 0xd5, 0x3b, 0xf1,
- 0xa8, 0x15, 0x1d, 0xbb, 0x33, 0x3e, 0x60, 0x37, 0xc6, 0x34, 0x07, 0xdd,
- 0x95, 0xb3, 0xc3, 0x2f, 0x28, 0xca, 0x66, 0xbf, 0x97, 0x34, 0x25, 0x24,
- 0x4e, 0x30, 0x92, 0xe2, 0xad, 0xd4, 0xdd, 0x68, 0x7d, 0x35, 0x92, 0x5d,
- 0x3b, 0xf6, 0x99, 0xdc, 0x70, 0x11, 0xbc, 0xf0, 0x26, 0x08, 0xdd, 0x02,
- 0x50, 0xf0, 0x96, 0xf6, 0xf0, 0x1b, 0x2b, 0x87, 0xc0, 0xa1, 0x38, 0x24,
- 0x82, 0x7e, 0x3a, 0x88, 0x0b, 0x32, 0xd2, 0x30, 0x5d, 0x36, 0x4f, 0x9a,
- 0x2f, 0x49, 0xdb, 0xf0, 0xfa, 0x06, 0x32, 0x20, 0x18, 0x21, 0xbe, 0xdc,
- 0x10, 0xc4, 0xfb, 0x0c, 0xf8, 0xeb, 0x5c, 0xdc, 0xd4, 0x54, 0x13, 0xc8,
- 0x0a, 0x11, 0x79, 0x69, 0xe7, 0x9b, 0x5c, 0xa8, 0x8b, 0xa4, 0xf8, 0xbc,
- 0x25, 0xea, 0x3e, 0x4d, 0xd7, 0xd3, 0xcb, 0xc2, 0xaf, 0x5e, 0xb7, 0x45,
- 0x16, 0x5a, 0x6f, 0x8d, 0xf1, 0x53, 0x50, 0x9e, 0x74, 0x4e, 0x2e, 0xdb,
- 0x79, 0xe6, 0x0a, 0xde, 0xd6, 0x2a, 0xc6, 0x13, 0x40, 0x1d, 0x6b, 0x28,
- 0xfb, 0x5a, 0xf9, 0x43, 0xec, 0xfd, 0x18, 0x34, 0xa0, 0xdf, 0x91, 0xe3,
- 0x4e, 0xed, 0x7a, 0x7a, 0xb5, 0x24, 0x0f, 0xc4, 0xbc, 0x59, 0xbb, 0xa8,
- 0xbb, 0x30, 0xeb, 0x2e, 0x4c, 0xa1, 0x98, 0xb7, 0xbc, 0x26, 0xd8, 0x21,
- 0xe6, 0xeb, 0xaf, 0x5a, 0x70, 0x1e, 0xca, 0x97, 0xd0, 0x5f, 0x69, 0x37,
- 0xb9, 0xee, 0x41, 0x83, 0xf1, 0x93, 0x39, 0x50, 0x27, 0xe4, 0x5b, 0xc9,
- 0x64, 0x30, 0xb6, 0x67, 0x21, 0x38, 0x9f, 0x8f, 0xdf, 0x68, 0xe9, 0xbb,
- 0xe2, 0x36, 0x24, 0x71, 0xee, 0x70, 0x2d, 0xc2, 0x43, 0xdc, 0xf0, 0x35,
- 0x01, 0x69, 0x86, 0x51, 0xd6, 0x97, 0x99, 0x4e, 0xbe, 0x45, 0xc9, 0x88,
- 0x9e, 0x27, 0x45, 0x45, 0x18, 0x84, 0x99, 0x30, 0xf5, 0x4c, 0xba, 0xf5,
- 0xf8, 0x4c, 0x09, 0xef, 0xf3, 0x9d, 0x6d, 0xd3, 0x26, 0xdb, 0x34, 0xaa,
- 0x45, 0xbb, 0xe2, 0x57, 0x80, 0x19, 0x37, 0x17, 0x46, 0xe7, 0xd2, 0xee,
- 0x18, 0x89, 0x22, 0xb9, 0x4e, 0x56, 0xcc, 0xe9, 0x3c, 0x5a, 0x9b, 0x6f,
- 0xcb, 0xc2, 0xe4, 0x18, 0x98, 0x8c, 0xae, 0x9c, 0x9a, 0x55, 0x3f, 0x44,
- 0xad, 0xce, 0xe7, 0xc6, 0xeb, 0x63, 0x20, 0x1b, 0xf9, 0x40, 0x47, 0xb2,
- 0x40, 0xb6, 0x69, 0x22, 0xf3, 0x87, 0x22, 0x1a, 0x0b, 0xda, 0x98, 0x74,
- 0xf1, 0x01, 0x7c, 0xb7, 0xbc, 0xa5, 0xba, 0x7a, 0xe9, 0x35, 0x38, 0xfe,
- 0xfd, 0xe6, 0xe3, 0x47, 0x3c, 0xb2, 0xf8, 0xaf, 0xb7, 0xe4, 0x42, 0x9e,
- 0x16, 0x00, 0x51, 0x8f, 0xe1, 0xf5, 0x85, 0xf2, 0xd5, 0x3d, 0xfa, 0x8d,
- 0x55, 0x39, 0xa4, 0xbb, 0x24, 0xfc, 0x3d, 0x7e, 0xe3, 0x82, 0x2a, 0xbc,
- 0x46, 0x31, 0x9d, 0x26, 0x44, 0x5a, 0x6d, 0x90, 0x35, 0x16, 0x6d, 0xf8,
- 0x10, 0xa7, 0x1a, 0x55, 0xee, 0xe4, 0x5b, 0xad, 0xba, 0xc6, 0x09, 0x14,
- 0x08, 0x24, 0xbb, 0x07, 0xfd, 0x35, 0xdd, 0x52, 0x2a, 0x44, 0xe6, 0xec,
- 0xb7, 0xdf, 0x67, 0xb9, 0x49, 0xa1, 0xc9, 0x44, 0xa8, 0x76, 0xc7, 0x18,
- 0x4c, 0x8c, 0xaa, 0xa1, 0xeb, 0x2b, 0x3a, 0xe9, 0xb9, 0xb8, 0xba, 0x35,
- 0xfd, 0x3f, 0xa5, 0xf7, 0x05, 0x8a, 0x1c, 0x8d, 0xc2, 0xff, 0xe1, 0x5a,
- 0x70, 0xb7, 0xce, 0x6d, 0xaa, 0x03, 0xbd, 0x40, 0x24, 0x80, 0xe2, 0x27,
- 0x3d, 0x42, 0x77, 0x50, 0x94, 0xed, 0xe2, 0x6e, 0x96, 0x72, 0xc5, 0x1d,
- 0x81, 0xe7, 0xcf, 0xe9, 0x22, 0x94, 0x9b, 0x7a, 0xaf, 0x00, 0x70, 0x02,
- 0x0b, 0x3b, 0x47, 0x17, 0x54, 0xfe, 0xe9, 0x30, 0x27, 0x8d, 0x28, 0xce,
- 0xcf, 0xfa, 0xb8, 0x41, 0x94, 0x11, 0x63, 0xf5, 0x6d, 0x17, 0xd3, 0xcc,
- 0x7d, 0x2c, 0xc6, 0xf1, 0x6a, 0x75, 0xad, 0xf2, 0x2b, 0x2b, 0x7c, 0x43,
- 0x1a, 0x35, 0x71, 0xb4, 0x70, 0x06, 0xe5, 0x78, 0x70, 0x4d, 0x18, 0x3c,
- 0xa3, 0x5a, 0x31, 0xbd, 0xf9, 0x0c, 0x2f, 0xbf, 0x90, 0x9a, 0x08, 0x3c,
- 0x9d, 0xee, 0xe3, 0x83, 0xe5, 0xe2, 0xbd, 0x6b, 0x1a, 0xcf, 0xe4, 0x21,
- 0x87, 0xb4, 0xf5, 0x96, 0x6e, 0xac, 0x7d, 0x30, 0xe4, 0xcb, 0xc4, 0xdf,
- 0x8e, 0xf8, 0xfb, 0x5d, 0xfc, 0xc6, 0x7a, 0x43, 0xcf, 0x93, 0x5b, 0xd6,
- 0xdf, 0xf9, 0xf1, 0x10, 0x24, 0x4d, 0xd1, 0x33, 0x4d, 0xc3, 0xa7, 0x2a,
- 0x5f, 0x08, 0x15, 0x57, 0xf4, 0x40, 0x7a, 0xe7, 0xf2, 0xfa, 0x07, 0x12,
- 0x11, 0xfb, 0x11, 0x02, 0x02, 0x5f, 0xbe, 0xc2, 0xf8, 0x3c, 0xd2, 0x78,
- 0xdd, 0x87, 0x36, 0x94, 0xa1, 0x31, 0x45, 0x54, 0xa2, 0x38, 0x22, 0x77,
- 0xfd, 0x66, 0xcd, 0xd3, 0x32, 0x39, 0x19, 0xd9, 0xc5, 0x40, 0x96, 0x43,
- 0x0c, 0xf7, 0x3f, 0x7a, 0xe5, 0xf4, 0x03, 0xb8, 0xfb, 0x72, 0x75, 0xf7,
- 0x0a, 0x2a, 0xf3, 0x92, 0x6f, 0x61, 0xe8, 0x2f, 0x71, 0x8f, 0xf0, 0xce,
- 0x19, 0x89, 0x29, 0x46, 0x6a, 0xe7, 0x6f, 0x38, 0xd1, 0xa5, 0x41, 0xf9,
- 0xc0, 0x4b, 0x0c, 0xfc, 0xff, 0x49, 0xbf, 0x23, 0xf1, 0x66, 0xb3, 0xad,
- 0x94, 0x9a, 0xa8, 0x10, 0x83, 0x9c, 0x69, 0x0d, 0x62, 0x06, 0x47, 0xeb,
- 0x37, 0x23, 0x02, 0x0e, 0x94, 0x00, 0x65, 0xa1, 0x3f, 0x7d, 0xb3, 0x2f,
- 0x4c, 0x4b, 0x32, 0x5f, 0x77, 0xe7, 0xe7, 0x9a, 0xff, 0x6f, 0x00, 0x00,
- 0x00, 0xff, 0xff, 0xa8, 0x76, 0x8d, 0x12, 0x3b, 0x2c, 0x00, 0x00,
- },
- "conf/license/Apache v2 License",
- )
-}
-
-func conf_license_artistic_license_2_0() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x8c, 0x59,
- 0x5b, 0x73, 0xe2, 0x48, 0xb2, 0x7e, 0xaf, 0x5f, 0x51, 0xd1, 0x2f, 0x63,
- 0x47, 0xd0, 0x3e, 0xd3, 0x33, 0x73, 0xce, 0xd9, 0x9d, 0x37, 0xda, 0xe0,
- 0xb6, 0x62, 0x31, 0xb0, 0x80, 0xdb, 0xe3, 0xc7, 0x42, 0x2a, 0x41, 0xad,
- 0x85, 0x8a, 0xad, 0x92, 0x4c, 0xb3, 0xbf, 0x7e, 0xf3, 0x52, 0xa5, 0x0b,
- 0xc8, 0x3b, 0x3b, 0x11, 0xd3, 0x61, 0x74, 0xc9, 0xca, 0xeb, 0x97, 0x5f,
- 0xa6, 0x36, 0x7b, 0x2d, 0xc7, 0xae, 0x32, 0xbe, 0x32, 0xa9, 0x9c, 0x99,
- 0x54, 0x97, 0x5e, 0xcb, 0x5f, 0xee, 0x7e, 0x16, 0x42, 0xb6, 0xff, 0xdd,
- 0xdb, 0xe3, 0xd9, 0x99, 0xdd, 0xbe, 0x92, 0x37, 0xe9, 0xad, 0xfc, 0xe5,
- 0xe7, 0x2f, 0xbf, 0x85, 0xdb, 0xd3, 0x77, 0xed, 0xce, 0xb6, 0xd4, 0xd2,
- 0x78, 0x79, 0xd4, 0xee, 0x60, 0xaa, 0x4a, 0x67, 0xb2, 0xb2, 0x32, 0x85,
- 0x37, 0xa4, 0x2a, 0x33, 0x99, 0x81, 0x64, 0x67, 0xb6, 0x75, 0xa5, 0x25,
- 0x3c, 0xbb, 0x55, 0x95, 0x39, 0xe0, 0x4d, 0xa3, 0x7d, 0x38, 0xc0, 0xe6,
- 0xb2, 0xda, 0xc3, 0xeb, 0x45, 0x38, 0x3b, 0xb3, 0x69, 0x7d, 0xd0, 0x65,
- 0x35, 0x92, 0xf0, 0x92, 0x4c, 0xf7, 0xaa, 0xdc, 0x99, 0x72, 0x27, 0x4d,
- 0x85, 0x67, 0x94, 0xb6, 0x92, 0xaa, 0x28, 0xec, 0x49, 0x67, 0x77, 0x42,
- 0x2c, 0x9d, 0x56, 0x87, 0x6d, 0xa1, 0x85, 0xd8, 0x74, 0x25, 0x68, 0x5f,
- 0xa9, 0x6d, 0x61, 0xfc, 0x5e, 0x7b, 0x10, 0xad, 0x65, 0x05, 0x8a, 0x79,
- 0x59, 0x97, 0x99, 0x76, 0xf2, 0xb4, 0x37, 0xe9, 0x5e, 0x2a, 0xb9, 0x33,
- 0xef, 0xba, 0x94, 0xb9, 0xd3, 0x5a, 0x7a, 0x9b, 0x57, 0x27, 0xe5, 0xb4,
- 0x58, 0xaa, 0xf4, 0x4d, 0xed, 0xb4, 0x3c, 0xa8, 0xb3, 0xdc, 0x6a, 0xd6,
- 0x32, 0x1b, 0xc9, 0x83, 0xcd, 0x4c, 0x4e, 0x7f, 0xb5, 0xb6, 0xc0, 0x0f,
- 0x30, 0xee, 0x7f, 0xac, 0x93, 0x4e, 0x77, 0xae, 0xde, 0x09, 0x74, 0xa7,
- 0x29, 0x2b, 0xd0, 0x1f, 0xd5, 0xad, 0xf6, 0xaa, 0x22, 0x15, 0x5a, 0x07,
- 0x3e, 0xda, 0x02, 0xf5, 0x38, 0x28, 0x78, 0x0a, 0xfe, 0xf7, 0x70, 0xfc,
- 0x41, 0x4b, 0x15, 0x22, 0x20, 0x52, 0x5b, 0x56, 0xce, 0x16, 0xd2, 0x82,
- 0xb3, 0xe8, 0xcd, 0x4c, 0xbf, 0xeb, 0xc2, 0x1e, 0xd1, 0x23, 0xec, 0x2a,
- 0x90, 0x18, 0x15, 0x05, 0x63, 0x0a, 0xd0, 0xbf, 0x32, 0x45, 0x21, 0xdf,
- 0xb4, 0x3e, 0xa2, 0x9f, 0xe0, 0x9d, 0xc6, 0x10, 0xf5, 0xae, 0x4c, 0x01,
- 0xae, 0x80, 0xbf, 0xbc, 0xb4, 0x47, 0x30, 0xd8, 0xdb, 0xda, 0xa5, 0x9a,
- 0x02, 0xd3, 0xb3, 0x1d, 0x9c, 0xf9, 0x6a, 0x6b, 0x50, 0x03, 0xee, 0x15,
- 0x27, 0x75, 0xbe, 0x88, 0xe6, 0x41, 0xbd, 0xa1, 0x8e, 0x0e, 0x62, 0xa1,
- 0x51, 0x13, 0x0f, 0x47, 0xdb, 0xa2, 0x38, 0x4b, 0x5b, 0x57, 0xde, 0x64,
- 0x3a, 0x06, 0x51, 0x34, 0x41, 0x34, 0x4e, 0xa7, 0x15, 0x3c, 0x70, 0x32,
- 0xd5, 0x7e, 0xd8, 0x03, 0xf0, 0x4a, 0x0c, 0x43, 0xd0, 0xf7, 0x4e, 0xca,
- 0x24, 0x27, 0x03, 0x38, 0x62, 0xd7, 0x99, 0x41, 0xf1, 0x67, 0xcd, 0x48,
- 0x68, 0x5e, 0x83, 0xe5, 0x35, 0xdc, 0x22, 0xb7, 0x9c, 0xc1, 0x82, 0xa3,
- 0xb3, 0x47, 0x8b, 0x17, 0xac, 0x20, 0xa5, 0x49, 0x86, 0x8e, 0x27, 0x8c,
- 0xe8, 0x19, 0xbf, 0xb7, 0x75, 0x91, 0x49, 0x74, 0xb5, 0x4a, 0x3f, 0x88,
- 0x0f, 0x7a, 0xc8, 0x6b, 0xfd, 0x26, 0x14, 0xd8, 0x92, 0xe7, 0xda, 0xa1,
- 0xff, 0x59, 0x11, 0xf4, 0x72, 0xc7, 0x17, 0xe0, 0xba, 0x89, 0xce, 0x4d,
- 0x69, 0x2a, 0x63, 0x4b, 0xcf, 0x75, 0xf1, 0xe9, 0x52, 0xde, 0x27, 0x79,
- 0xd0, 0xaa, 0xe4, 0x74, 0x34, 0x65, 0x66, 0xde, 0x4d, 0x56, 0xab, 0xe2,
- 0xc6, 0xdf, 0x4a, 0x48, 0x21, 0xeb, 0x76, 0xaa, 0x34, 0xff, 0x52, 0x28,
- 0x00, 0x2e, 0x91, 0x84, 0x52, 0x1d, 0xc0, 0xf5, 0xa6, 0xa4, 0x37, 0xd2,
- 0x46, 0x1a, 0xd8, 0x0f, 0x3a, 0xc8, 0xdc, 0x72, 0x72, 0xc0, 0xf1, 0xe0,
- 0xe8, 0xc6, 0x7f, 0xcd, 0xe1, 0x25, 0x27, 0xa4, 0x6d, 0xce, 0x55, 0xe5,
- 0x59, 0x1e, 0x21, 0xc9, 0xce, 0xec, 0xa9, 0x3d, 0xe4, 0x43, 0x1a, 0x9f,
- 0xd2, 0xe8, 0x0a, 0x8c, 0x21, 0x68, 0x02, 0x42, 0x1d, 0x09, 0x39, 0x28,
- 0x88, 0x81, 0x51, 0x05, 0x46, 0xbf, 0xe7, 0x40, 0x50, 0x49, 0xa5, 0xa9,
- 0x75, 0x99, 0x2a, 0x41, 0x91, 0x0f, 0xc3, 0xfb, 0x13, 0x97, 0x37, 0x84,
- 0x23, 0xd5, 0x59, 0xed, 0xb4, 0x8f, 0xca, 0x41, 0x9a, 0x7d, 0x22, 0xef,
- 0x7e, 0x82, 0x50, 0xf4, 0xf5, 0xd3, 0xce, 0xdb, 0x12, 0x33, 0x4b, 0x9e,
- 0x28, 0x40, 0x85, 0x79, 0xd3, 0x11, 0x4b, 0x46, 0xf4, 0x76, 0x5b, 0x6a,
- 0x23, 0x54, 0x97, 0x2a, 0xf3, 0xdc, 0xd5, 0x2f, 0x9e, 0x12, 0x7e, 0x76,
- 0xdd, 0x9e, 0x42, 0xc2, 0x42, 0x4e, 0x82, 0x8f, 0x31, 0x29, 0x72, 0xa8,
- 0x1c, 0xdf, 0x2d, 0x68, 0xb9, 0x25, 0x41, 0xa2, 0x0f, 0x77, 0x6c, 0xcc,
- 0x88, 0x91, 0x0c, 0x1c, 0xf2, 0x0e, 0x41, 0x7a, 0xd7, 0xbe, 0xa9, 0xc4,
- 0x8e, 0xd0, 0x80, 0x07, 0x36, 0x27, 0x11, 0xd5, 0x1e, 0xb3, 0x90, 0x4e,
- 0xb9, 0x93, 0xe3, 0x7e, 0x9e, 0x13, 0xc0, 0x80, 0xfb, 0x3d, 0x9c, 0x8e,
- 0x92, 0xb4, 0x41, 0xb7, 0x93, 0x92, 0xeb, 0x0a, 0xc4, 0x28, 0x97, 0x91,
- 0x8c, 0xef, 0xe0, 0x10, 0x90, 0x4c, 0xa6, 0x2a, 0xf9, 0x14, 0x60, 0x28,
- 0x5e, 0x8e, 0xa6, 0x4e, 0x1a, 0x1b, 0xa2, 0xb5, 0xe0, 0x74, 0xc8, 0x2f,
- 0x4a, 0x53, 0xc6, 0xe1, 0x7e, 0x11, 0x90, 0xe7, 0xd4, 0x1b, 0x83, 0x2a,
- 0xc9, 0x80, 0x80, 0x6a, 0xef, 0x0d, 0x02, 0x05, 0xb8, 0x1b, 0x62, 0x81,
- 0x88, 0xae, 0x0b, 0xcf, 0x5e, 0x8e, 0x49, 0xa8, 0xbc, 0xe6, 0xa2, 0x4d,
- 0xed, 0xe1, 0x88, 0x01, 0xb3, 0x9c, 0x2a, 0xdd, 0xf4, 0x1d, 0xa1, 0x00,
- 0xca, 0x22, 0xdf, 0xc5, 0x06, 0x0c, 0x75, 0xe7, 0xb5, 0xde, 0x2b, 0x57,
- 0x76, 0xc0, 0xfd, 0x07, 0xad, 0xbb, 0x99, 0x91, 0xeb, 0x4e, 0x85, 0x43,
- 0x47, 0x70, 0x3b, 0x2e, 0x81, 0xe6, 0x15, 0xb0, 0x25, 0x78, 0x1d, 0xe0,
- 0xa2, 0x63, 0x66, 0xeb, 0x09, 0x5f, 0x1f, 0x8f, 0xd6, 0x55, 0xa1, 0x72,
- 0x3a, 0x4f, 0x91, 0xc1, 0x6d, 0xde, 0x53, 0x91, 0x20, 0x10, 0x55, 0x00,
- 0x37, 0x9a, 0x1b, 0x0e, 0x2a, 0xd2, 0xa9, 0x7d, 0xd0, 0xa6, 0xc9, 0xe6,
- 0x18, 0xaf, 0x18, 0x94, 0x4f, 0xd0, 0x0f, 0x72, 0x34, 0xbe, 0x5f, 0x36,
- 0xd2, 0xe4, 0xd8, 0xc0, 0xb0, 0xec, 0x50, 0xe0, 0x56, 0xeb, 0x92, 0xab,
- 0xac, 0x69, 0x2d, 0xa0, 0x16, 0xde, 0xc5, 0x3b, 0xcd, 0x55, 0x69, 0x4b,
- 0x40, 0x50, 0x70, 0x3f, 0x01, 0xb2, 0xfe, 0x71, 0x04, 0x1d, 0x0c, 0x82,
- 0xaa, 0xd3, 0xff, 0xac, 0xa1, 0xc9, 0x69, 0x4e, 0x13, 0x4e, 0xdc, 0xab,
- 0xa4, 0x8d, 0x2a, 0x5e, 0xe6, 0x4d, 0xb7, 0x26, 0xda, 0xaa, 0x6e, 0xf4,
- 0x23, 0x0d, 0xa8, 0xeb, 0x86, 0x26, 0x47, 0x52, 0x7c, 0x0d, 0x5d, 0x93,
- 0xaf, 0x02, 0xf6, 0x03, 0x1a, 0x92, 0x1d, 0x43, 0x2a, 0x5d, 0xa9, 0x43,
- 0xef, 0xf7, 0x55, 0x5a, 0xc0, 0x0d, 0x53, 0x02, 0xb8, 0x04, 0xbe, 0xd1,
- 0xaa, 0x04, 0x81, 0xb9, 0x22, 0x23, 0xa0, 0xd4, 0xa4, 0x53, 0xa7, 0x08,
- 0x39, 0x21, 0xd8, 0x6d, 0xbd, 0x44, 0xe3, 0xae, 0xf0, 0x1e, 0xbc, 0x67,
- 0xa0, 0x5d, 0xa5, 0xb5, 0x23, 0x04, 0x7f, 0x8f, 0x8f, 0x41, 0x45, 0x31,
- 0x42, 0x81, 0xd9, 0xa1, 0xdf, 0x37, 0x6e, 0x07, 0x0b, 0xb0, 0x8d, 0x2f,
- 0xb5, 0x2b, 0xe4, 0x83, 0x05, 0xde, 0x40, 0x79, 0x1a, 0xeb, 0x20, 0xaf,
- 0xab, 0xda, 0x35, 0x40, 0xb3, 0xa6, 0x86, 0xfa, 0x09, 0xf3, 0xea, 0xd0,
- 0x71, 0x6c, 0xe8, 0xb3, 0x88, 0xab, 0xa3, 0x86, 0xd1, 0xb0, 0x18, 0xbe,
- 0xd5, 0xba, 0x16, 0x80, 0x20, 0x37, 0xbb, 0xda, 0xf1, 0x5d, 0xc6, 0xa5,
- 0x88, 0xef, 0x57, 0xc0, 0x7e, 0x38, 0xc2, 0xfd, 0xec, 0xea, 0xb8, 0x34,
- 0xdc, 0x00, 0xd5, 0x2b, 0xcd, 0x87, 0xda, 0xed, 0x3f, 0x00, 0x98, 0x82,
- 0x06, 0x5b, 0xf0, 0xb6, 0x0b, 0x18, 0x8a, 0xa6, 0x63, 0x15, 0x12, 0xe6,
- 0x90, 0x1c, 0x40, 0xe7, 0xba, 0xa8, 0x28, 0xb5, 0x9d, 0x45, 0xb1, 0x18,
- 0x68, 0x93, 0x22, 0xf8, 0x43, 0x97, 0xf3, 0xf8, 0x0c, 0x2b, 0x17, 0x0a,
- 0x9e, 0xae, 0x16, 0xaa, 0xea, 0xf8, 0x9b, 0xdd, 0x40, 0xe2, 0x40, 0x59,
- 0xb1, 0xc4, 0x16, 0xed, 0xc9, 0xd3, 0x68, 0xca, 0xb3, 0x67, 0xca, 0xc1,
- 0xa9, 0x98, 0xf2, 0x9b, 0x2f, 0x10, 0x47, 0x80, 0x88, 0x4e, 0x11, 0xdb,
- 0x52, 0x88, 0x9b, 0x2f, 0xb7, 0x52, 0x46, 0x2a, 0xd2, 0xe3, 0x20, 0xdc,
- 0xe6, 0x07, 0x42, 0x8e, 0x92, 0x53, 0x60, 0x82, 0x15, 0x1f, 0x02, 0xcf,
- 0x89, 0xcb, 0x9c, 0x67, 0x8f, 0x52, 0x93, 0xa9, 0x1d, 0xf1, 0x83, 0x53,
- 0x38, 0x1d, 0x6c, 0x87, 0xd3, 0x53, 0xc6, 0x2e, 0x86, 0x0b, 0x3c, 0x0e,
- 0xc0, 0x46, 0x20, 0xd8, 0x04, 0xca, 0xd1, 0xe6, 0x1f, 0xa9, 0x30, 0x00,
- 0xc5, 0x1d, 0x93, 0xf9, 0xb0, 0x55, 0xcb, 0x0b, 0xbb, 0x7e, 0xba, 0x50,
- 0x1e, 0x0c, 0xfe, 0x25, 0x18, 0x8c, 0x59, 0x38, 0xf9, 0x90, 0x2c, 0x0f,
- 0x38, 0x3a, 0x5c, 0x12, 0xc3, 0x35, 0xd0, 0x81, 0x38, 0x6c, 0xd9, 0x60,
- 0x3a, 0x10, 0x0a, 0x53, 0x1f, 0x06, 0x2d, 0x17, 0xa1, 0x05, 0xed, 0x30,
- 0x0b, 0x3d, 0xa6, 0x08, 0xf9, 0x4b, 0x5e, 0x60, 0xf2, 0x85, 0x87, 0x08,
- 0x8e, 0xb3, 0x1a, 0x31, 0x00, 0x9c, 0x2f, 0x80, 0x97, 0x47, 0x2d, 0x6d,
- 0x2c, 0xf0, 0x4b, 0xe6, 0xe2, 0x29, 0x44, 0xca, 0x7b, 0x9b, 0x1a, 0x85,
- 0x81, 0x05, 0x27, 0xa5, 0x85, 0x32, 0x07, 0x50, 0x1d, 0x50, 0x77, 0x4c,
- 0x5e, 0x77, 0x74, 0xd5, 0x69, 0x0e, 0x0a, 0x41, 0xcf, 0xa5, 0x37, 0xd0,
- 0x59, 0xd4, 0xc6, 0xce, 0x14, 0x1f, 0x53, 0xa6, 0x45, 0x0d, 0xad, 0x46,
- 0x89, 0x58, 0x22, 0x5d, 0x0f, 0x75, 0xca, 0xe8, 0xe6, 0xd7, 0x8e, 0xb7,
- 0xd5, 0xf1, 0x58, 0x9c, 0xc9, 0x35, 0xdb, 0x1a, 0x72, 0xdf, 0xfc, 0xd0,
- 0x1e, 0x2c, 0x84, 0x2e, 0xa1, 0xb6, 0xa6, 0x30, 0xc0, 0x95, 0x02, 0xe0,
- 0x71, 0xfb, 0xe7, 0x1e, 0x71, 0xe8, 0xa4, 0x30, 0xaa, 0x91, 0x75, 0x59,
- 0x36, 0x95, 0xcf, 0x20, 0x16, 0x4b, 0x42, 0x94, 0xa6, 0xd0, 0x1a, 0x86,
- 0x7e, 0x42, 0xea, 0xce, 0x04, 0x9e, 0x26, 0x8e, 0x12, 0x3b, 0xa6, 0x23,
- 0xff, 0x5e, 0x27, 0xcb, 0x28, 0x38, 0x8f, 0x5c, 0x22, 0x4e, 0xe1, 0x25,
- 0x5f, 0x73, 0xa5, 0x87, 0x8e, 0x73, 0x89, 0xad, 0x98, 0x9b, 0x93, 0x8b,
- 0x4c, 0xbc, 0x2e, 0x8f, 0x0b, 0x86, 0x00, 0x67, 0x70, 0xa2, 0x81, 0xc7,
- 0x7e, 0x1b, 0xce, 0x4f, 0x8a, 0xd3, 0xa5, 0xa0, 0xf6, 0x45, 0x79, 0xd3,
- 0x4b, 0x29, 0xf1, 0x71, 0x4a, 0xa1, 0x4d, 0x44, 0x23, 0xe1, 0x42, 0xcc,
- 0x4d, 0x25, 0x87, 0xe2, 0x78, 0x55, 0xd6, 0xb7, 0x03, 0xf9, 0x98, 0x16,
- 0x5a, 0x39, 0x08, 0x6b, 0x04, 0x5d, 0xb9, 0xb7, 0x27, 0x04, 0x79, 0x66,
- 0xf1, 0x5e, 0x34, 0x31, 0xba, 0xf6, 0x2e, 0x67, 0x11, 0x84, 0x87, 0x47,
- 0x4f, 0x4c, 0xac, 0xc2, 0x00, 0x00, 0x11, 0xfe, 0xb4, 0x30, 0x8e, 0xf1,
- 0xc3, 0xa4, 0x29, 0x6d, 0xf9, 0xd9, 0x47, 0x21, 0x39, 0xe0, 0x0f, 0xd2,
- 0xdc, 0x11, 0x34, 0x45, 0x9d, 0xd6, 0x38, 0x80, 0xe2, 0x0f, 0x26, 0xa9,
- 0x75, 0x11, 0x93, 0x68, 0x10, 0x61, 0x40, 0x73, 0x50, 0x1a, 0xb8, 0xe0,
- 0x62, 0x3e, 0x8d, 0x91, 0xc8, 0x2d, 0x4e, 0xb9, 0x70, 0xd4, 0xef, 0x8c,
- 0xfd, 0x37, 0xea, 0x56, 0xf2, 0x18, 0x36, 0x04, 0x40, 0x9d, 0x1c, 0x0c,
- 0x69, 0x70, 0x99, 0x81, 0xa2, 0x19, 0xb5, 0x87, 0x2c, 0xe7, 0xd9, 0x78,
- 0x28, 0x7d, 0xa0, 0xfe, 0x6c, 0x33, 0xc6, 0x0e, 0x92, 0x63, 0x4a, 0x8c,
- 0x58, 0x80, 0x94, 0x15, 0xfd, 0x1a, 0x09, 0x6d, 0x73, 0x88, 0xd9, 0x86,
- 0xbe, 0x76, 0xb3, 0x05, 0xdb, 0xe0, 0x30, 0xf0, 0x1f, 0x1f, 0x05, 0x63,
- 0x71, 0x05, 0x68, 0xd2, 0x74, 0x98, 0xe1, 0x5c, 0x8b, 0xfc, 0x2c, 0x0c,
- 0x1a, 0x30, 0x27, 0x97, 0x3c, 0xcc, 0x41, 0x07, 0x70, 0x51, 0x06, 0x76,
- 0x35, 0x9c, 0xd2, 0xeb, 0xb2, 0x0c, 0xd3, 0xf1, 0x95, 0xf9, 0x77, 0x32,
- 0x61, 0x36, 0xa6, 0xb2, 0xcc, 0x04, 0x12, 0x3b, 0xe4, 0xe3, 0x43, 0xed,
- 0x91, 0xba, 0x29, 0xcc, 0x62, 0x1c, 0xcf, 0x82, 0xae, 0xbe, 0x1d, 0x10,
- 0x49, 0x4a, 0x93, 0x60, 0xf4, 0xcc, 0x07, 0x2e, 0x8f, 0x96, 0xa7, 0x60,
- 0x39, 0xed, 0x33, 0x22, 0xeb, 0xc6, 0xe9, 0x07, 0x46, 0x67, 0x4d, 0x53,
- 0x46, 0x9f, 0xbe, 0x5f, 0x29, 0x04, 0x33, 0x2e, 0x8f, 0x6a, 0x21, 0x2b,
- 0xae, 0x7b, 0xc3, 0x9f, 0x24, 0x0a, 0x13, 0x75, 0x12, 0x42, 0x19, 0x10,
- 0x94, 0x32, 0xb7, 0x72, 0x30, 0x17, 0xb0, 0xff, 0x87, 0x27, 0xf0, 0x11,
- 0xd5, 0x0c, 0xe6, 0xe4, 0x08, 0x6e, 0xd6, 0xcc, 0x47, 0xc2, 0x0d, 0x3a,
- 0x04, 0xf7, 0x0c, 0xc5, 0xb9, 0x33, 0xc4, 0x85, 0xa9, 0x0d, 0xcb, 0xa1,
- 0xbb, 0x3c, 0x19, 0xd6, 0xb7, 0xf6, 0x31, 0x6c, 0x1e, 0xdc, 0x49, 0xef,
- 0xb7, 0x4c, 0x9c, 0xd7, 0x04, 0x74, 0x3a, 0x63, 0x79, 0x48, 0x7e, 0xf2,
- 0x5a, 0xb3, 0x7b, 0x89, 0xca, 0xd0, 0xcb, 0xc1, 0xb7, 0x4c, 0x6d, 0x89,
- 0xb5, 0xc2, 0x00, 0xdd, 0x59, 0xd4, 0xfc, 0x07, 0x1f, 0xf6, 0x67, 0x32,
- 0x6a, 0x09, 0x39, 0x75, 0x8f, 0x93, 0x75, 0x6f, 0x9e, 0xc7, 0x43, 0x04,
- 0x2c, 0x8c, 0xbf, 0xc1, 0xf5, 0x95, 0xe6, 0xfe, 0xc0, 0x0e, 0xe0, 0x0c,
- 0x6b, 0xbc, 0x4f, 0x55, 0xa1, 0xaa, 0xc6, 0x85, 0x38, 0x54, 0x30, 0xe7,
- 0x71, 0x76, 0x6f, 0xb6, 0x04, 0x3a, 0xdb, 0x2e, 0x3b, 0x0a, 0xdc, 0xeb,
- 0x21, 0x3e, 0xd7, 0x6e, 0xc1, 0xae, 0xe0, 0xbd, 0xc1, 0xce, 0x07, 0xdb,
- 0xac, 0x51, 0x06, 0xa8, 0x87, 0xbd, 0xae, 0x29, 0xdf, 0x20, 0x70, 0xeb,
- 0x0b, 0x68, 0x01, 0xff, 0x3b, 0xdc, 0x02, 0x7a, 0x18, 0xfd, 0xe1, 0x39,
- 0x51, 0xa4, 0x68, 0x45, 0x0e, 0xf1, 0x88, 0x88, 0x20, 0x48, 0x65, 0x0b,
- 0x5d, 0x69, 0x2a, 0x60, 0x57, 0xa7, 0x0c, 0x22, 0x20, 0x06, 0x71, 0x1c,
- 0x32, 0x7e, 0xa7, 0x7b, 0x81, 0xfa, 0xa8, 0xbe, 0xa4, 0x5c, 0x23, 0x6f,
- 0xe8, 0x09, 0x09, 0x05, 0x2c, 0xde, 0x55, 0x61, 0x32, 0x19, 0x02, 0x0e,
- 0xa4, 0xa2, 0x1d, 0x51, 0xbb, 0x94, 0xad, 0xd9, 0x46, 0xf9, 0xbe, 0x2e,
- 0x23, 0x7c, 0x13, 0xc2, 0x2e, 0xe8, 0x4d, 0x5e, 0xc1, 0x9d, 0x03, 0x61,
- 0x4d, 0x95, 0x73, 0x67, 0x82, 0x1c, 0x70, 0x21, 0x11, 0x97, 0xae, 0x44,
- 0x4c, 0x89, 0x14, 0xb7, 0x7d, 0xa6, 0x24, 0x15, 0x68, 0x1b, 0x25, 0x48,
- 0xab, 0xe0, 0x0f, 0x59, 0xea, 0xd3, 0x95, 0xe1, 0x99, 0x3e, 0x50, 0xb2,
- 0xc1, 0x04, 0xad, 0x71, 0x06, 0xcf, 0x6b, 0x47, 0x9d, 0xb5, 0xa7, 0xac,
- 0x48, 0xf2, 0xb8, 0xff, 0x22, 0x41, 0x6c, 0x63, 0x5f, 0x54, 0x14, 0xd0,
- 0x23, 0xa6, 0x18, 0x1d, 0x4a, 0x46, 0x03, 0x83, 0xaf, 0xc8, 0x70, 0xd2,
- 0x54, 0x39, 0x14, 0x16, 0x49, 0x0b, 0xfa, 0x2a, 0x5c, 0x11, 0xb6, 0x35,
- 0xd2, 0x93, 0x8a, 0x77, 0x1a, 0x7b, 0xe0, 0x6e, 0xd9, 0xe5, 0xcd, 0x90,
- 0x18, 0x39, 0xf0, 0x00, 0x1e, 0x38, 0x82, 0x8f, 0xa9, 0x77, 0xf8, 0xa6,
- 0xe5, 0xb4, 0xfb, 0x3d, 0xa4, 0x67, 0xff, 0x37, 0x9c, 0x69, 0xd7, 0xdb,
- 0x0f, 0x2c, 0xa0, 0x3e, 0x47, 0xf8, 0xef, 0xd2, 0x8c, 0xd2, 0x2b, 0xac,
- 0x25, 0xd7, 0x61, 0x73, 0xf3, 0x1b, 0xff, 0x04, 0x1c, 0x38, 0x32, 0x91,
- 0x12, 0xd7, 0x09, 0x36, 0x44, 0xf9, 0xc7, 0xbb, 0x9d, 0xd3, 0x3b, 0x55,
- 0x85, 0x1e, 0x33, 0x33, 0xe5, 0x5b, 0x04, 0xab, 0x40, 0xa4, 0xc0, 0xa2,
- 0xff, 0xef, 0x12, 0xce, 0xf0, 0x82, 0xee, 0x91, 0xad, 0x9b, 0x81, 0xfd,
- 0x4f, 0xcb, 0xe5, 0xdd, 0x00, 0xeb, 0x61, 0xba, 0x44, 0x2f, 0x1d, 0x59,
- 0x08, 0xf3, 0xea, 0x8b, 0x31, 0xa5, 0xa5, 0x9b, 0xf1, 0x60, 0x94, 0x38,
- 0x40, 0xe1, 0x39, 0x58, 0x61, 0xb1, 0xa2, 0xfa, 0xab, 0x8e, 0x38, 0x8b,
- 0x8a, 0x76, 0x49, 0x7b, 0x41, 0xe1, 0x7c, 0x7f, 0x56, 0x63, 0x68, 0xec,
- 0xaf, 0x4b, 0x48, 0x08, 0x13, 0x68, 0x0c, 0x00, 0x34, 0x3a, 0xdc, 0x21,
- 0x07, 0x66, 0xd0, 0x55, 0xae, 0x27, 0xe9, 0x8e, 0x48, 0xf3, 0xe0, 0x2e,
- 0x58, 0xf4, 0xf0, 0xbe, 0x0e, 0xf3, 0xe5, 0x25, 0x10, 0xf6, 0x3c, 0x3a,
- 0x04, 0x77, 0x42, 0xf9, 0x08, 0x3c, 0xd9, 0x80, 0x3a, 0x98, 0x91, 0x7f,
- 0xb9, 0x1d, 0x1e, 0x47, 0x81, 0x59, 0xbc, 0xb5, 0x02, 0xf1, 0xf4, 0xcb,
- 0xd8, 0x31, 0x98, 0x0a, 0x8e, 0x13, 0xf5, 0x08, 0xda, 0x8e, 0xe9, 0xc3,
- 0x36, 0xf0, 0xfb, 0xee, 0x7c, 0x26, 0x0b, 0x74, 0x3e, 0x3f, 0xd7, 0x94,
- 0x8a, 0x3d, 0xf1, 0xf2, 0x0f, 0x32, 0x72, 0x5b, 0x9b, 0x22, 0x93, 0x44,
- 0x37, 0x3f, 0xab, 0x02, 0x99, 0x02, 0xcf, 0xf4, 0x78, 0x3b, 0x0e, 0xfd,
- 0x71, 0xbb, 0x41, 0xde, 0x42, 0x07, 0x35, 0x1c, 0x8c, 0xd8, 0x66, 0x44,
- 0xd8, 0xde, 0x7e, 0xe4, 0xc3, 0xb4, 0x19, 0x9e, 0x13, 0x3b, 0xc9, 0xd3,
- 0x3c, 0xd8, 0xec, 0xc9, 0xf4, 0x0f, 0x1a, 0xad, 0x55, 0xd8, 0xfe, 0xd3,
- 0x77, 0x10, 0x97, 0xab, 0x54, 0x5f, 0x6c, 0xc3, 0xb0, 0x76, 0x92, 0x4a,
- 0x43, 0x54, 0x37, 0xd4, 0xba, 0xc1, 0xb5, 0x73, 0x78, 0xfd, 0xbe, 0x9d,
- 0x7e, 0x96, 0xca, 0x55, 0xbc, 0x6b, 0xbc, 0x0c, 0x19, 0x44, 0xe4, 0xaf,
- 0xb7, 0xf2, 0x85, 0x3a, 0xee, 0xcd, 0x9f, 0x10, 0xf6, 0xc0, 0xbc, 0x79,
- 0x97, 0x9f, 0x3a, 0x73, 0xac, 0xfc, 0x2d, 0xbb, 0x02, 0xc6, 0x4d, 0xe4,
- 0x24, 0xfa, 0x47, 0xa5, 0x19, 0x59, 0x89, 0x43, 0xd5, 0xfe, 0xfa, 0x7b,
- 0x01, 0xd7, 0xc6, 0x28, 0x6c, 0xb5, 0x0e, 0x5e, 0x17, 0xef, 0xc8, 0xe5,
- 0x53, 0x85, 0x6b, 0x86, 0x6e, 0x10, 0xc1, 0xc4, 0xed, 0x10, 0x50, 0x61,
- 0x1b, 0x29, 0x3b, 0xd4, 0x92, 0xba, 0x02, 0x33, 0x06, 0xc5, 0x6b, 0x34,
- 0xd1, 0x19, 0xfb, 0x70, 0xfd, 0x78, 0x35, 0x8d, 0x01, 0xab, 0xd2, 0x45,
- 0x1e, 0xa6, 0xbf, 0xb0, 0x7a, 0xeb, 0x4f, 0x7d, 0xc3, 0x1f, 0x4c, 0xd0,
- 0xcf, 0xdf, 0x74, 0xa9, 0x1d, 0x50, 0xb8, 0x25, 0x06, 0x8e, 0x73, 0x5e,
- 0xdc, 0x7c, 0xf9, 0x19, 0x40, 0x69, 0x0c, 0x98, 0x5c, 0x23, 0xc1, 0xef,
- 0xd2, 0xf5, 0x51, 0xff, 0x9b, 0xdd, 0x70, 0x1d, 0x0d, 0xac, 0x57, 0xe0,
- 0xd0, 0x1d, 0x7e, 0xb2, 0x2a, 0xe3, 0x02, 0x70, 0x60, 0x91, 0x77, 0x27,
- 0xbf, 0x9e, 0x99, 0xcf, 0x8d, 0x78, 0x8c, 0x3e, 0x07, 0xe0, 0xcc, 0x3a,
- 0x6b, 0xdc, 0xeb, 0xaf, 0x35, 0xb8, 0x9c, 0x3e, 0x56, 0x7d, 0xc3, 0xe4,
- 0x84, 0xc2, 0x22, 0x5a, 0xfd, 0xcf, 0xa3, 0x9e, 0x24, 0x7d, 0xb5, 0xde,
- 0xec, 0x00, 0x5d, 0x47, 0xa2, 0xe8, 0xf4, 0x9e, 0x2f, 0xb8, 0x7a, 0x4a,
- 0x3e, 0x9a, 0x36, 0x9a, 0xdd, 0x68, 0x8f, 0xe7, 0xb5, 0xf1, 0x16, 0xcd,
- 0x98, 0x80, 0x9c, 0x0f, 0x7c, 0x80, 0xdf, 0xf5, 0xb0, 0x4e, 0x6d, 0x00,
- 0x77, 0x55, 0xa2, 0xe4, 0x51, 0xc3, 0x15, 0x4a, 0x18, 0x58, 0xb0, 0x91,
- 0x43, 0x86, 0xfa, 0x48, 0x44, 0x33, 0x81, 0x00, 0xd1, 0x99, 0x84, 0x86,
- 0x75, 0xa1, 0x26, 0x86, 0x6b, 0x90, 0xe6, 0xf3, 0x4b, 0x78, 0x9f, 0xbf,
- 0xcd, 0xd9, 0x5c, 0x5c, 0xf6, 0xd5, 0x2f, 0xb8, 0x65, 0xda, 0xf4, 0x3f,
- 0xa6, 0x85, 0xaa, 0x85, 0x01, 0xbd, 0xe4, 0x3e, 0x40, 0x82, 0x68, 0xb2,
- 0x0b, 0xeb, 0x36, 0x6c, 0xdb, 0x95, 0x53, 0x48, 0x40, 0xdc, 0xdb, 0x48,
- 0xc0, 0x58, 0xf5, 0x8e, 0x5f, 0x9f, 0xe8, 0x17, 0xdf, 0xc0, 0x19, 0x87,
- 0x3c, 0x5f, 0xd8, 0x9d, 0x8d, 0xa9, 0x32, 0xb0, 0x89, 0xbe, 0xf9, 0xf2,
- 0xeb, 0xa5, 0x02, 0x01, 0x8e, 0x78, 0x60, 0xc0, 0x59, 0x5a, 0xff, 0x80,
- 0x0b, 0x1e, 0x7c, 0x3b, 0xc2, 0xfa, 0x28, 0xb2, 0x13, 0xd4, 0xc4, 0x48,
- 0x20, 0x7b, 0xfe, 0x6c, 0xf3, 0xcf, 0xa1, 0x3b, 0x1d, 0x55, 0xd5, 0x7e,
- 0x89, 0xd3, 0xf1, 0xdb, 0xe4, 0x08, 0xc2, 0xf3, 0xce, 0x74, 0x7b, 0xc4,
- 0x49, 0x6d, 0x71, 0x24, 0xc3, 0xdb, 0x50, 0x3a, 0x05, 0xaa, 0x0e, 0xff,
- 0x4a, 0x73, 0xa0, 0x6f, 0x00, 0xcd, 0x36, 0xe7, 0x64, 0x50, 0x04, 0xed,
- 0x38, 0x75, 0x6f, 0xe1, 0x7a, 0x49, 0x08, 0x88, 0xef, 0x85, 0xa3, 0x69,
- 0x5d, 0x15, 0xcd, 0x20, 0x2e, 0xff, 0xc1, 0x02, 0x3e, 0x0c, 0x26, 0x14,
- 0x6a, 0xfc, 0xbe, 0xa2, 0x9c, 0x81, 0x31, 0xc0, 0x94, 0xb9, 0x33, 0xb8,
- 0x5c, 0x8f, 0xaf, 0x35, 0x7d, 0x35, 0x30, 0x38, 0x64, 0x57, 0xa6, 0xc2,
- 0x14, 0x6e, 0x6c, 0xad, 0x0c, 0xf7, 0x23, 0xd1, 0x22, 0x1e, 0xce, 0x86,
- 0xce, 0x7a, 0xff, 0x99, 0xd4, 0x21, 0x6e, 0x67, 0x6b, 0xc4, 0x5b, 0xfa,
- 0x7d, 0x0b, 0x5d, 0x0c, 0x3f, 0x2e, 0x57, 0x9d, 0x0f, 0x7f, 0x30, 0x30,
- 0x68, 0xfc, 0x92, 0x2e, 0x1a, 0x1e, 0x17, 0x8d, 0x45, 0xfc, 0xe1, 0x23,
- 0x7d, 0x84, 0x6e, 0x92, 0xd7, 0x7c, 0x45, 0x3c, 0x07, 0x55, 0x1a, 0xe5,
- 0xf9, 0xfb, 0x3c, 0xb2, 0xbd, 0x0f, 0x76, 0xf6, 0xe0, 0x32, 0xfe, 0xd2,
- 0x8a, 0x4b, 0x41, 0x04, 0x27, 0x68, 0x56, 0x60, 0x91, 0xa5, 0x16, 0x0b,
- 0x2c, 0xb3, 0x0a, 0xf9, 0x4d, 0x68, 0xd8, 0x1a, 0x88, 0x38, 0x82, 0x1b,
- 0xf0, 0x8c, 0x52, 0x06, 0x37, 0x4f, 0x93, 0x66, 0x3f, 0x88, 0xd9, 0xf5,
- 0x42, 0xdf, 0x5d, 0xab, 0xf3, 0xef, 0x62, 0xf3, 0x38, 0x95, 0xcb, 0xf1,
- 0xfd, 0xdf, 0xc6, 0xdf, 0xa6, 0x32, 0x59, 0xcb, 0xe5, 0x6a, 0xf1, 0x3d,
- 0x99, 0x4c, 0x27, 0xf2, 0xeb, 0xab, 0xc4, 0x5b, 0xf7, 0x8b, 0xe5, 0xeb,
- 0x2a, 0xf9, 0xf6, 0xb8, 0x91, 0x8f, 0x8b, 0xd9, 0x64, 0xba, 0x92, 0xe3,
- 0xf9, 0x04, 0x2e, 0xce, 0x37, 0xab, 0xe4, 0xeb, 0xf3, 0x66, 0xb1, 0x5a,
- 0xcb, 0x4f, 0xe3, 0xb5, 0x48, 0xd6, 0x3f, 0xd1, 0x8d, 0x97, 0x64, 0xf3,
- 0xb8, 0x78, 0xde, 0xc0, 0xdf, 0xaf, 0x72, 0xfa, 0xc7, 0x72, 0x35, 0x5d,
- 0xaf, 0xe5, 0x62, 0x25, 0x93, 0xa7, 0xe5, 0x2c, 0x01, 0x99, 0x2f, 0xe3,
- 0xd5, 0x6a, 0x3c, 0xdf, 0x24, 0xd3, 0xf5, 0x1d, 0x09, 0x0f, 0xd7, 0x45,
- 0x7b, 0x5d, 0x2e, 0x1e, 0xe4, 0xd3, 0x74, 0x75, 0xff, 0x08, 0x3f, 0xc7,
- 0x5f, 0x93, 0x59, 0xb2, 0x79, 0x1d, 0xc9, 0x87, 0x64, 0x33, 0x47, 0x49,
- 0x0f, 0x20, 0x6a, 0x0c, 0xca, 0xae, 0x36, 0xc9, 0xfd, 0xf3, 0x6c, 0xbc,
- 0x92, 0xcb, 0xe7, 0xd5, 0x72, 0xb1, 0x9e, 0x8e, 0xe0, 0x0c, 0x31, 0x5f,
- 0xcc, 0x3f, 0x27, 0xf3, 0x87, 0x55, 0x32, 0xff, 0x36, 0x7d, 0x9a, 0xce,
- 0x41, 0x87, 0xd5, 0x54, 0x4e, 0x92, 0xf5, 0xfd, 0x6c, 0x9c, 0x3c, 0xc1,
- 0xd9, 0x9b, 0x05, 0x1d, 0x39, 0xfd, 0x63, 0x83, 0x37, 0x97, 0xd3, 0xd5,
- 0x53, 0xb2, 0xd9, 0xb0, 0x9d, 0xaf, 0x8b, 0xe7, 0x95, 0x9c, 0x2d, 0xee,
- 0xc7, 0x33, 0x31, 0x1b, 0xbf, 0xdc, 0xc9, 0xe7, 0xf9, 0x0c, 0x8f, 0x5b,
- 0x4d, 0xff, 0xfe, 0x9c, 0xac, 0xf8, 0x11, 0xb8, 0x3e, 0x92, 0xf3, 0xc5,
- 0xb5, 0x3b, 0x40, 0xa5, 0x8e, 0x37, 0xc0, 0x01, 0xb3, 0x99, 0xf8, 0x3a,
- 0x95, 0xb3, 0x64, 0xfc, 0x75, 0x36, 0x65, 0x8d, 0xc1, 0x17, 0x13, 0x90,
- 0x73, 0xbf, 0x19, 0xc9, 0x64, 0xde, 0xfe, 0x75, 0x0f, 0x6e, 0x06, 0x23,
- 0x67, 0xa3, 0x20, 0x63, 0x0d, 0xc7, 0xc1, 0x85, 0x04, 0xb4, 0x98, 0x8c,
- 0x9f, 0x20, 0x1c, 0x6b, 0x30, 0x21, 0x59, 0x83, 0x3d, 0xf0, 0x30, 0x49,
- 0x79, 0x19, 0xbf, 0x4a, 0xf4, 0x2e, 0xf8, 0x08, 0x4d, 0x79, 0x5e, 0x4f,
- 0xe3, 0x9f, 0x21, 0x80, 0x23, 0x39, 0xfd, 0x3e, 0x9d, 0xcb, 0xe4, 0x41,
- 0x8c, 0x27, 0xdf, 0x93, 0x35, 0xa8, 0x1e, 0xef, 0x2f, 0xd6, 0xeb, 0x84,
- 0xdd, 0x89, 0x97, 0xd6, 0xcf, 0xf7, 0x8f, 0x92, 0x0f, 0xb9, 0xfb, 0x77,
- 0x00, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x26, 0x8b, 0xf2, 0xb7, 0x22, 0x00,
- 0x00,
- },
- "conf/license/Artistic License 2.0",
- )
-}
-
-func conf_license_bsd_3_clause_license() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x94, 0x52,
- 0xcd, 0x6e, 0xe3, 0x36, 0x10, 0xbe, 0xeb, 0x29, 0x06, 0x7b, 0xda, 0x14,
- 0x42, 0xfa, 0x83, 0x9e, 0xda, 0x13, 0x2d, 0x31, 0x36, 0x01, 0x59, 0x52,
- 0x49, 0x2a, 0x5e, 0x1f, 0x15, 0x89, 0x4e, 0x08, 0x58, 0x62, 0x40, 0xd1,
- 0x09, 0xd2, 0xa2, 0xef, 0xde, 0x8f, 0xb4, 0x83, 0x78, 0xdb, 0x45, 0x8b,
- 0x5e, 0x6c, 0x8a, 0xc3, 0xf9, 0xfe, 0x66, 0x0a, 0xf7, 0xfc, 0xe6, 0xed,
- 0xe3, 0x53, 0xa0, 0xcf, 0xc3, 0x0d, 0xfd, 0xf4, 0xc3, 0x8f, 0x3f, 0x67,
- 0xec, 0x78, 0xa4, 0x74, 0xb5, 0x90, 0x37, 0x8b, 0xf1, 0x2f, 0x66, 0xbc,
- 0xcd, 0x32, 0x69, 0x46, 0xbb, 0x04, 0x6f, 0x1f, 0x4e, 0xc1, 0xba, 0x99,
- 0xfa, 0x79, 0xa4, 0xd3, 0x62, 0xc8, 0xce, 0xb4, 0xb8, 0x93, 0x1f, 0x4c,
- 0xba, 0x79, 0xb0, 0x73, 0xef, 0xdf, 0xe8, 0xe0, 0xfc, 0xb4, 0xe4, 0xf4,
- 0x6a, 0xc3, 0x13, 0x39, 0x9f, 0xfe, 0xdd, 0x29, 0x64, 0x93, 0x1b, 0xed,
- 0xc1, 0x0e, 0x7d, 0x04, 0xc8, 0xa9, 0xf7, 0x86, 0x9e, 0x8d, 0x9f, 0x6c,
- 0x08, 0x66, 0xa4, 0x67, 0xef, 0x5e, 0xec, 0x88, 0x43, 0x78, 0xea, 0x03,
- 0x7e, 0x0c, 0x40, 0x8e, 0x47, 0xf7, 0x6a, 0xe7, 0x47, 0x1a, 0xdc, 0x3c,
- 0xda, 0xd8, 0xb4, 0xa4, 0xa6, 0xc9, 0x84, 0x5f, 0xb2, 0xec, 0x3b, 0xfa,
- 0x5a, 0xd1, 0x42, 0xee, 0xf0, 0x2e, 0x65, 0x70, 0x23, 0x9e, 0x9d, 0x96,
- 0x00, 0x03, 0xa1, 0x87, 0xc4, 0x88, 0xd7, 0x3f, 0xb8, 0x97, 0x58, 0x7a,
- 0xf7, 0x3b, 0xbb, 0x60, 0x07, 0x93, 0xa3, 0x66, 0x97, 0x8c, 0xe8, 0x08,
- 0xac, 0x08, 0x71, 0x4d, 0x36, 0x8f, 0x7f, 0x53, 0x02, 0xc2, 0xe1, 0xd8,
- 0xdb, 0xc9, 0xf8, 0xdb, 0x6f, 0x29, 0x00, 0xd3, 0x55, 0x02, 0xef, 0x0a,
- 0x60, 0x6d, 0x3c, 0x41, 0xd5, 0xbf, 0x88, 0x00, 0x7f, 0x94, 0xf1, 0x7f,
- 0x45, 0xd0, 0xc5, 0xda, 0xe8, 0x86, 0xd3, 0x64, 0xe6, 0x90, 0x92, 0x05,
- 0x16, 0x7a, 0xbe, 0x47, 0xee, 0x0e, 0x35, 0x4f, 0x53, 0x1f, 0x8c, 0xb7,
- 0xfd, 0x71, 0xf9, 0xc8, 0x38, 0x0d, 0x26, 0x35, 0x5e, 0xc9, 0x4f, 0x8e,
- 0x6a, 0x63, 0x53, 0x53, 0x2c, 0xce, 0xfd, 0x64, 0xa2, 0x98, 0x78, 0xfe,
- 0xc3, 0xf9, 0xc7, 0x7e, 0xb6, 0xbf, 0x27, 0x86, 0x3f, 0x21, 0xfb, 0xe3,
- 0x49, 0x0a, 0xde, 0x86, 0x98, 0x21, 0x64, 0x9f, 0xe1, 0x9c, 0x5f, 0xc0,
- 0xfb, 0x46, 0x0f, 0x26, 0x2e, 0x09, 0x0c, 0x38, 0x32, 0xf3, 0x88, 0x5b,
- 0x13, 0xf7, 0x01, 0x3a, 0x26, 0x17, 0x0c, 0x9d, 0x83, 0xc1, 0x9a, 0x8d,
- 0x10, 0x88, 0x2d, 0xa3, 0x03, 0x0a, 0xef, 0x51, 0x2c, 0xee, 0x10, 0x5e,
- 0xe3, 0xb8, 0x2f, 0xdb, 0x43, 0xcb, 0xb3, 0x19, 0xe2, 0xfa, 0xa0, 0xcd,
- 0xc6, 0xa5, 0xf2, 0x71, 0x71, 0xe6, 0xf3, 0x0a, 0x2d, 0xcb, 0xd9, 0x80,
- 0xde, 0x08, 0x45, 0xaa, 0xb9, 0xd3, 0x3b, 0x26, 0x39, 0xe1, 0xdc, 0xca,
- 0xe6, 0x5e, 0x94, 0xbc, 0xa4, 0xd5, 0x9e, 0xf4, 0x86, 0x53, 0xd1, 0xb4,
- 0x7b, 0x29, 0xd6, 0x1b, 0x4d, 0x9b, 0xa6, 0x2a, 0xb9, 0x54, 0xc4, 0xea,
- 0x12, 0xb7, 0xb5, 0x96, 0x62, 0xd5, 0xe9, 0x06, 0x17, 0x9f, 0x98, 0x42,
- 0xe7, 0xa7, 0x2c, 0x16, 0x58, 0xbd, 0x27, 0xfe, 0xa5, 0x95, 0x5c, 0x29,
- 0x6a, 0x24, 0x89, 0x6d, 0x5b, 0x09, 0x80, 0x01, 0x5d, 0xb2, 0x5a, 0x0b,
- 0xae, 0x72, 0x12, 0x75, 0x51, 0x75, 0xa5, 0xa8, 0xd7, 0x39, 0x01, 0x80,
- 0xea, 0x46, 0x53, 0x25, 0xb6, 0x42, 0xe3, 0x99, 0x6e, 0xf2, 0x48, 0x9a,
- 0xfd, 0xb3, 0x8d, 0x9a, 0x3b, 0xda, 0x72, 0x59, 0x6c, 0xf0, 0xc9, 0x56,
- 0xa2, 0x12, 0x7a, 0x9f, 0x84, 0xdc, 0x09, 0x5d, 0x47, 0xae, 0x3b, 0x90,
- 0x31, 0x6a, 0x99, 0xd4, 0xa2, 0xe8, 0x2a, 0x26, 0xa9, 0xed, 0x64, 0xdb,
- 0x28, 0x4e, 0xb0, 0x95, 0x95, 0x42, 0x15, 0x15, 0x13, 0x5b, 0x5e, 0xde,
- 0x82, 0x1d, 0x8c, 0xc4, 0xef, 0x79, 0xad, 0x49, 0x6d, 0x58, 0x55, 0x7d,
- 0xd3, 0x65, 0xd4, 0xfe, 0x95, 0xc7, 0x15, 0x87, 0x48, 0xb6, 0xaa, 0x78,
- 0x96, 0x98, 0xe0, 0xb2, 0x14, 0x92, 0x17, 0x3a, 0xda, 0xf9, 0x38, 0x15,
- 0x48, 0x0e, 0xfa, 0xaa, 0x9c, 0x54, 0xcb, 0x0b, 0x11, 0x0f, 0xfc, 0x0b,
- 0x87, 0x19, 0x26, 0xf7, 0xf9, 0x05, 0x53, 0xf1, 0xdf, 0x3a, 0x3c, 0x42,
- 0x31, 0x2b, 0xd9, 0x96, 0xad, 0xe1, 0xed, 0xf3, 0x7f, 0x44, 0x82, 0x99,
- 0x14, 0x9d, 0xe4, 0xdb, 0xa8, 0x19, 0x39, 0xa8, 0x6e, 0xa5, 0xb4, 0xd0,
- 0x9d, 0xe6, 0xb4, 0x6e, 0x9a, 0x32, 0x06, 0x9d, 0x29, 0x2e, 0xef, 0x45,
- 0xc1, 0xd5, 0xaf, 0x54, 0x35, 0x2a, 0xa5, 0xd5, 0x29, 0x9e, 0x53, 0xc9,
- 0x34, 0x4b, 0xc4, 0x80, 0x40, 0x54, 0x28, 0xe3, 0xbc, 0xea, 0x94, 0x48,
- 0xa1, 0x89, 0x5a, 0x73, 0x29, 0xbb, 0x56, 0x8b, 0xa6, 0xbe, 0x81, 0xf3,
- 0x1d, 0x62, 0x91, 0x59, 0xc1, 0xd0, 0x5a, 0xa6, 0x74, 0x9b, 0x3a, 0x59,
- 0x45, 0x42, 0x8d, 0xdc, 0x47, 0xd0, 0x98, 0x41, 0x0a, 0x3f, 0xa7, 0xdd,
- 0x86, 0xe3, 0x5e, 0xc6, 0x40, 0x53, 0x52, 0x2c, 0x46, 0xa0, 0x90, 0x58,
- 0xa1, 0xaf, 0x9e, 0x65, 0xe0, 0x43, 0x80, 0xfa, 0xca, 0x23, 0xd5, 0x7c,
- 0x5d, 0x89, 0x35, 0xaf, 0x0b, 0x1e, 0xd5, 0x34, 0x11, 0x65, 0x27, 0x14,
- 0xbf, 0xc1, 0xac, 0x84, 0x8a, 0x0f, 0xc4, 0x99, 0x76, 0xc7, 0xc0, 0xd9,
- 0x25, 0xcb, 0x71, 0x46, 0x50, 0x95, 0xa5, 0xe3, 0xd5, 0xc6, 0xe6, 0x69,
- 0x92, 0x24, 0xee, 0x88, 0x95, 0xf7, 0x22, 0xca, 0xbe, 0x3c, 0xc6, 0xec,
- 0x95, 0xb8, 0xec, 0x49, 0x8a, 0xac, 0xd8, 0xd0, 0x39, 0xee, 0xdb, 0xbf,
- 0x02, 0x00, 0x00, 0xff, 0xff, 0x84, 0xcd, 0xba, 0x22, 0xc1, 0x05, 0x00,
- 0x00,
- },
- "conf/license/BSD (3-Clause) License",
- )
-}
-
-func conf_license_gpl_v2() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x9c, 0x7c,
- 0x6d, 0x73, 0xdb, 0xc8, 0x91, 0xff, 0xfb, 0xf9, 0x14, 0x53, 0x7a, 0x63,
- 0xa9, 0x8a, 0xa6, 0xd7, 0xce, 0x3f, 0xf9, 0x67, 0x57, 0x57, 0x57, 0x45,
- 0x49, 0x94, 0xc5, 0x44, 0xa6, 0x14, 0x92, 0xb2, 0xa3, 0x77, 0x01, 0xc9,
- 0xa1, 0x88, 0x18, 0x04, 0x78, 0x18, 0x40, 0x5a, 0x56, 0x2a, 0xdf, 0xfd,
- 0xfa, 0xd7, 0xdd, 0x03, 0x0c, 0xf8, 0xe0, 0xdd, 0x4b, 0xea, 0xf6, 0x76,
- 0x4d, 0x00, 0x33, 0x3d, 0xfd, 0xf8, 0xeb, 0x87, 0xf1, 0xe7, 0xf1, 0x93,
- 0xfd, 0x3c, 0x1c, 0x0f, 0x27, 0x83, 0x7b, 0xfb, 0xf8, 0x74, 0x75, 0x3f,
- 0xba, 0xb6, 0xf4, 0xcf, 0x70, 0x3c, 0x1d, 0x1a, 0x7b, 0xfc, 0x7f, 0x5f,
- 0x5d, 0xe9, 0xd3, 0x22, 0xb7, 0x9f, 0x7a, 0xf6, 0x2f, 0x75, 0xee, 0xec,
- 0xc7, 0x9f, 0x7f, 0xfe, 0x68, 0x8c, 0xbd, 0x2e, 0xb6, 0xbb, 0x32, 0x7d,
- 0x59, 0x57, 0xf6, 0xfc, 0xfa, 0x82, 0x7e, 0xfc, 0xf3, 0xcf, 0x3d, 0x7e,
- 0x64, 0x6f, 0x4b, 0xe7, 0xec, 0xb4, 0x58, 0x55, 0x6f, 0x49, 0xe9, 0xec,
- 0x6d, 0x51, 0xe7, 0xcb, 0xa4, 0xa2, 0x05, 0x7a, 0x76, 0x94, 0x2f, 0xfa,
- 0x3d, 0xfb, 0x5f, 0xeb, 0xaa, 0xda, 0xfe, 0xf2, 0xe1, 0xc3, 0xca, 0xaf,
- 0xfa, 0x45, 0xf9, 0xf2, 0xe1, 0xbf, 0x8d, 0xfd, 0x23, 0xbe, 0x4a, 0xf2,
- 0xef, 0x59, 0x9a, 0xdb, 0x69, 0x45, 0xdf, 0x57, 0x3d, 0x7b, 0x9b, 0xae,
- 0xaa, 0xb5, 0xbd, 0xcd, 0x8a, 0xa2, 0xec, 0xd9, 0xab, 0xc2, 0x57, 0x58,
- 0xe1, 0xcb, 0xc0, 0xfe, 0xf4, 0xe9, 0xe3, 0xc7, 0x9f, 0xde, 0x7f, 0xfc,
- 0xc3, 0x4f, 0x1f, 0xed, 0xd3, 0x74, 0x60, 0xec, 0xf0, 0xd5, 0x95, 0xbb,
- 0x82, 0xe8, 0x4a, 0xbd, 0xdd, 0xba, 0x72, 0x93, 0x56, 0x95, 0x5b, 0xda,
- 0xaa, 0xb0, 0x0b, 0x22, 0xd0, 0x26, 0xf9, 0xd2, 0x2e, 0x53, 0x5f, 0x95,
- 0xe9, 0xbc, 0xae, 0x9c, 0xa5, 0x77, 0xe7, 0x44, 0xcc, 0x06, 0x0f, 0x53,
- 0xe7, 0x8d, 0x2d, 0x56, 0xb6, 0x5a, 0xd3, 0x97, 0x59, 0xba, 0x70, 0xb9,
- 0x77, 0x76, 0x59, 0x2c, 0xea, 0x8d, 0xcb, 0x69, 0x7f, 0x7a, 0xdf, 0x2e,
- 0xd6, 0x49, 0xfe, 0x92, 0xe6, 0x2f, 0x36, 0xad, 0xb0, 0x7c, 0x5e, 0x54,
- 0x36, 0xc9, 0xb2, 0xe2, 0xcd, 0x2d, 0xfb, 0xe6, 0x14, 0xbb, 0xf8, 0x7f,
- 0x8f, 0xa5, 0x4b, 0x36, 0xf3, 0xcc, 0xe1, 0xad, 0xd9, 0xda, 0x85, 0xe5,
- 0xbd, 0x5d, 0x15, 0xa5, 0xdd, 0xd0, 0x61, 0xac, 0x0f, 0x0c, 0xc2, 0x3f,
- 0x4b, 0xe7, 0xd3, 0x97, 0x5c, 0xc8, 0xae, 0x92, 0xef, 0xf4, 0xe3, 0x5b,
- 0xb2, 0xb3, 0xbb, 0xa2, 0x2e, 0xcd, 0x8a, 0xb8, 0xb1, 0x2c, 0x36, 0x78,
- 0xe2, 0xd7, 0xfc, 0x3e, 0x9d, 0x88, 0xe9, 0xa2, 0x13, 0x57, 0x7d, 0x6b,
- 0xaf, 0x76, 0x74, 0x98, 0xbc, 0x2a, 0x13, 0x4f, 0x44, 0x57, 0xb4, 0x17,
- 0x4b, 0xd8, 0xe5, 0xae, 0x4c, 0x32, 0xfb, 0x58, 0xcf, 0x69, 0x6b, 0x73,
- 0xaf, 0xa7, 0xa3, 0x33, 0xa4, 0x79, 0xe5, 0xf2, 0xa5, 0x6c, 0xf5, 0x52,
- 0x27, 0xc4, 0xf5, 0x8a, 0xc4, 0x85, 0xad, 0xec, 0x8f, 0xb6, 0xc2, 0x33,
- 0x13, 0x68, 0x7e, 0xff, 0x9e, 0x5e, 0xd9, 0x80, 0x4e, 0x5f, 0xd3, 0x6b,
- 0xd8, 0xb4, 0x39, 0x0e, 0x6d, 0x81, 0x77, 0xf9, 0xa0, 0xc4, 0x2b, 0xa2,
- 0xd1, 0xdb, 0xda, 0x93, 0x0a, 0xf5, 0xc1, 0x89, 0xd4, 0x9b, 0x2e, 0x69,
- 0x36, 0x90, 0x96, 0x6c, 0xb7, 0x19, 0x49, 0x04, 0x9b, 0x33, 0x7f, 0x58,
- 0x30, 0xae, 0xab, 0x4c, 0xa6, 0x55, 0xa6, 0x77, 0x3e, 0xe2, 0x60, 0xce,
- 0xa7, 0x49, 0xf2, 0x9d, 0x2d, 0xe8, 0x9b, 0xd2, 0x6e, 0xcb, 0xe2, 0xa5,
- 0x4c, 0x36, 0xf6, 0x6d, 0x5d, 0x60, 0xe5, 0xba, 0x5a, 0x17, 0xa5, 0x27,
- 0x2e, 0x6d, 0x48, 0x39, 0xe8, 0x4d, 0x53, 0x7b, 0x91, 0x29, 0x91, 0x74,
- 0x3e, 0x2d, 0x36, 0x4e, 0x3f, 0x3b, 0xa5, 0xb8, 0x9d, 0xc3, 0x2d, 0x0a,
- 0xd2, 0x21, 0x62, 0xdf, 0x7c, 0x67, 0x02, 0xb3, 0xef, 0x9d, 0xa7, 0x03,
- 0xda, 0x13, 0x07, 0x4b, 0x73, 0x5f, 0xb9, 0x64, 0xd9, 0xbf, 0xb0, 0xf6,
- 0xb9, 0xa8, 0xed, 0x22, 0xc9, 0xf9, 0xac, 0x3b, 0x2b, 0xb4, 0x30, 0xe7,
- 0x95, 0x60, 0x4f, 0x02, 0x2c, 0x0a, 0x56, 0xad, 0x6f, 0x6b, 0x97, 0xdb,
- 0x37, 0xe2, 0xeb, 0xd6, 0x25, 0xdf, 0xc1, 0x0c, 0x66, 0x6a, 0x20, 0xa4,
- 0x87, 0x47, 0x20, 0xa8, 0x74, 0x2b, 0x57, 0x96, 0x38, 0x0d, 0x31, 0x40,
- 0xe5, 0xd7, 0x83, 0x9e, 0x9a, 0x6d, 0x49, 0xfb, 0xd3, 0x01, 0x1f, 0xea,
- 0x53, 0x94, 0xf9, 0x03, 0xd5, 0x8b, 0x45, 0x9a, 0x54, 0x50, 0x0a, 0xb3,
- 0x4e, 0x5e, 0x45, 0xc0, 0x91, 0x72, 0x44, 0xf6, 0x24, 0x66, 0x74, 0x40,
- 0x9f, 0x3d, 0x57, 0xd5, 0x29, 0x5f, 0x58, 0x13, 0x0c, 0xdb, 0x18, 0x31,
- 0xe9, 0x95, 0xb6, 0xb6, 0xe9, 0x0a, 0x4b, 0xdb, 0xb7, 0xd4, 0xaf, 0x2f,
- 0x7a, 0xcd, 0x56, 0x74, 0x96, 0x85, 0x4b, 0x5f, 0xb1, 0x48, 0x5d, 0x2e,
- 0xb0, 0xf4, 0x92, 0x04, 0x53, 0x32, 0xc3, 0x5e, 0x1c, 0xd9, 0x5f, 0x65,
- 0xc2, 0x87, 0xa4, 0xb3, 0xf4, 0xc7, 0xe8, 0x53, 0xbc, 0xa3, 0x8a, 0xda,
- 0x51, 0x46, 0xfa, 0x9c, 0x74, 0xcf, 0x12, 0x8d, 0x0b, 0xa1, 0x12, 0x8b,
- 0xe4, 0x36, 0x77, 0x6f, 0x42, 0x6f, 0xe0, 0xfb, 0xa5, 0xe8, 0x50, 0x58,
- 0xee, 0x7b, 0x5e, 0xbc, 0x35, 0xeb, 0x2e, 0x0b, 0xac, 0xe9, 0xb1, 0x32,
- 0xf1, 0xd9, 0xb3, 0x74, 0x66, 0x05, 0x3e, 0xad, 0xdc, 0xa2, 0x12, 0xcb,
- 0x61, 0x3f, 0xe8, 0x59, 0x2a, 0xb9, 0x8b, 0x78, 0x59, 0x3a, 0x70, 0x6a,
- 0x01, 0x25, 0xf2, 0xb2, 0x3c, 0x31, 0x63, 0x9e, 0x2e, 0x0d, 0xe9, 0x2a,
- 0x5c, 0x16, 0x98, 0xe9, 0x72, 0xb6, 0x74, 0xdd, 0x44, 0x56, 0x02, 0xe1,
- 0xd0, 0x68, 0xff, 0x5d, 0x1e, 0x15, 0x90, 0x4a, 0x09, 0xbb, 0x2d, 0xf9,
- 0x80, 0xf2, 0x56, 0xdf, 0xcc, 0xe4, 0x9b, 0xce, 0x2e, 0x64, 0xd1, 0x3e,
- 0x4b, 0x2a, 0x5e, 0x7c, 0xe1, 0xca, 0x2a, 0xa1, 0x03, 0xd3, 0x1b, 0x5b,
- 0x7a, 0x98, 0xce, 0xd3, 0x2c, 0xad, 0x52, 0x75, 0x43, 0x58, 0x59, 0x38,
- 0x6a, 0x8e, 0x4a, 0x34, 0xe6, 0x64, 0x0f, 0x14, 0x29, 0xfb, 0x37, 0xc5,
- 0x32, 0x5d, 0x41, 0x7d, 0x99, 0x15, 0xb7, 0xf4, 0xc0, 0xfd, 0x9a, 0x6c,
- 0xb6, 0x19, 0xbd, 0xa4, 0x6f, 0x1c, 0x5d, 0xce, 0xd7, 0x8b, 0xb5, 0x4d,
- 0x02, 0xcb, 0x89, 0x57, 0x6b, 0x07, 0xab, 0x33, 0xf4, 0xa7, 0x2a, 0xe5,
- 0x13, 0xb3, 0xcb, 0xb0, 0x2b, 0x47, 0x0b, 0xf1, 0x3e, 0x35, 0xb9, 0x81,
- 0x97, 0x54, 0xf5, 0x8f, 0xb4, 0x23, 0xa5, 0xa5, 0x72, 0x62, 0x0e, 0xdc,
- 0x4a, 0xcb, 0x05, 0xe6, 0x2b, 0xcc, 0xc8, 0x42, 0x57, 0xfb, 0x62, 0x65,
- 0xfc, 0xed, 0x9e, 0x3a, 0xd3, 0x27, 0x3b, 0x36, 0xb0, 0x5e, 0xa3, 0x6a,
- 0x91, 0x7a, 0xd1, 0x53, 0x13, 0x69, 0x1e, 0xad, 0x33, 0x20, 0x95, 0x68,
- 0xe8, 0xf0, 0x6b, 0x52, 0x09, 0x7a, 0x67, 0x13, 0x94, 0x81, 0x22, 0x0d,
- 0x5c, 0x10, 0xaf, 0x2a, 0x0a, 0x43, 0xff, 0x95, 0x96, 0x26, 0x88, 0x06,
- 0x36, 0xec, 0x8e, 0x69, 0x09, 0xe9, 0x3d, 0xc5, 0xb5, 0xea, 0x8d, 0x64,
- 0x5a, 0xb9, 0xad, 0xff, 0xc5, 0x9e, 0x7f, 0xbc, 0xe0, 0x58, 0x25, 0xc1,
- 0xb4, 0xcb, 0x75, 0x52, 0x4b, 0x73, 0xfe, 0xe9, 0x82, 0xf8, 0x47, 0x76,
- 0xae, 0x6a, 0x12, 0x45, 0xab, 0xb7, 0x75, 0x4a, 0x4c, 0x05, 0x8f, 0x3c,
- 0x3f, 0xcc, 0xdc, 0x0b, 0x99, 0x39, 0x47, 0x41, 0xcf, 0x31, 0x5b, 0xc3,
- 0x60, 0x2f, 0x96, 0x30, 0xad, 0xf9, 0x81, 0xa3, 0x10, 0x8b, 0x31, 0xde,
- 0x8f, 0xa9, 0x1e, 0x64, 0x9e, 0x38, 0x04, 0x59, 0xb8, 0x04, 0x12, 0x63,
- 0xef, 0x49, 0xee, 0x56, 0x8f, 0x82, 0x55, 0x61, 0x2c, 0x74, 0x20, 0x51,
- 0x78, 0xb6, 0xc6, 0xa0, 0xf0, 0xaa, 0x70, 0x86, 0x19, 0xee, 0x42, 0x64,
- 0xae, 0xa1, 0xb8, 0xbe, 0xa2, 0xcf, 0x7c, 0x23, 0x0a, 0xf1, 0xa6, 0x79,
- 0x41, 0xdf, 0x97, 0x08, 0x42, 0x3b, 0xde, 0x92, 0x4f, 0xd7, 0x89, 0x35,
- 0x24, 0x88, 0xd1, 0xea, 0x20, 0xc4, 0x30, 0xf1, 0x29, 0xbb, 0x61, 0xfa,
- 0x7d, 0xe3, 0xb0, 0x8b, 0xcb, 0xbc, 0xc4, 0x82, 0x6d, 0x42, 0xfe, 0x98,
- 0x28, 0xcc, 0x41, 0x9f, 0x51, 0x6f, 0xe1, 0x63, 0x0d, 0x22, 0x72, 0x55,
- 0x64, 0x44, 0xcc, 0x5b, 0x50, 0x0e, 0x56, 0xa0, 0x10, 0xe7, 0xb1, 0x63,
- 0x41, 0x22, 0x49, 0xf3, 0x24, 0xeb, 0xd1, 0x1e, 0x72, 0x24, 0xc4, 0x18,
- 0x62, 0x04, 0x45, 0xf6, 0x0d, 0x87, 0xd2, 0xb2, 0x58, 0xd6, 0x0b, 0x21,
- 0x83, 0x63, 0x08, 0xa4, 0x4b, 0xda, 0x89, 0x05, 0xc8, 0x35, 0x67, 0x10,
- 0x3d, 0xa4, 0x10, 0xad, 0x65, 0x34, 0x1c, 0xbd, 0xa3, 0x17, 0xb6, 0x75,
- 0xc5, 0x01, 0x46, 0xd4, 0xe5, 0x16, 0x8f, 0xb3, 0x5d, 0x8f, 0x37, 0x89,
- 0xdd, 0x13, 0x48, 0xaa, 0xd6, 0x84, 0x28, 0x28, 0x72, 0xd3, 0x5e, 0x14,
- 0xed, 0xc1, 0xcb, 0x8a, 0x42, 0x08, 0x9f, 0x5e, 0x63, 0xe3, 0x16, 0x8f,
- 0x2b, 0x84, 0x59, 0xd2, 0x3b, 0xf8, 0x56, 0xf6, 0x20, 0xaf, 0x45, 0xba,
- 0xe4, 0xfd, 0x97, 0xf0, 0x8e, 0xa5, 0x9c, 0x98, 0xe2, 0x57, 0x50, 0x07,
- 0x04, 0x46, 0x32, 0xce, 0x44, 0x98, 0xde, 0x04, 0x4e, 0x1c, 0x22, 0xcd,
- 0x97, 0xe9, 0x6b, 0xba, 0xac, 0x41, 0x94, 0x2d, 0xe6, 0xec, 0x48, 0x64,
- 0x93, 0x06, 0xce, 0x90, 0xc5, 0xe7, 0xd6, 0x91, 0x6e, 0x2e, 0xd8, 0xda,
- 0x38, 0x0e, 0xad, 0xdb, 0x65, 0xe8, 0xdf, 0x14, 0x86, 0x5c, 0x95, 0x94,
- 0xbb, 0xbe, 0x3a, 0x4d, 0xd2, 0x09, 0xa8, 0x0b, 0x89, 0x99, 0x95, 0x87,
- 0x39, 0xbe, 0x49, 0x96, 0xc0, 0x32, 0x76, 0x91, 0xb9, 0x44, 0x29, 0x24,
- 0x16, 0xe8, 0x81, 0xc4, 0xfc, 0xe6, 0x0d, 0x84, 0x5a, 0x8a, 0x6a, 0xaa,
- 0x6a, 0xbd, 0x53, 0xb4, 0x01, 0x2f, 0x4f, 0x3f, 0x83, 0xef, 0xcd, 0x7b,
- 0x09, 0x83, 0xb5, 0x7e, 0x80, 0x60, 0x5b, 0xc8, 0xbf, 0xb1, 0x5c, 0x8e,
- 0x4f, 0x05, 0x9d, 0x50, 0xbc, 0x26, 0xd6, 0x84, 0xa1, 0xd0, 0x09, 0x7a,
- 0xad, 0xfb, 0x52, 0x5d, 0x37, 0xa2, 0x6d, 0x0b, 0x01, 0x03, 0xab, 0x02,
- 0x08, 0xf0, 0x04, 0xfe, 0xfb, 0x31, 0xba, 0x9e, 0x0d, 0x27, 0x5f, 0xa6,
- 0x76, 0x30, 0xbe, 0xb1, 0xd7, 0x0f, 0xe3, 0x9b, 0xd1, 0x6c, 0xf4, 0x30,
- 0x9e, 0xda, 0xdb, 0x87, 0x09, 0xfd, 0xf1, 0xf1, 0x79, 0x34, 0xfe, 0xdc,
- 0xb3, 0x37, 0xa3, 0xe9, 0x6c, 0x32, 0xba, 0x7a, 0xc2, 0x23, 0x7e, 0xf1,
- 0xcb, 0xc3, 0xcd, 0xe8, 0x76, 0x74, 0x3d, 0xc0, 0x0f, 0xd8, 0xf2, 0xa7,
- 0x3e, 0xa3, 0xa8, 0x63, 0xb0, 0x49, 0x75, 0x93, 0x39, 0x4f, 0xc7, 0x11,
- 0x4c, 0xf3, 0x56, 0x94, 0xdf, 0xd5, 0x4d, 0x00, 0x25, 0x92, 0x0c, 0xbd,
- 0x49, 0xc0, 0x27, 0x04, 0xe2, 0x6d, 0x96, 0xa8, 0xf2, 0x42, 0x43, 0x5a,
- 0x1f, 0xb4, 0x2e, 0x32, 0x44, 0x1a, 0x9f, 0xec, 0x14, 0xfb, 0x6e, 0x08,
- 0x8d, 0x92, 0x08, 0x5a, 0x27, 0xb2, 0x34, 0x75, 0x13, 0x8c, 0x84, 0xa1,
- 0x01, 0x48, 0x1f, 0xc7, 0x1a, 0x7d, 0x91, 0xc1, 0xd9, 0xa3, 0xd0, 0x77,
- 0x46, 0xf0, 0xda, 0x11, 0x17, 0x7b, 0x86, 0x01, 0x4c, 0x43, 0x3e, 0xc7,
- 0x88, 0xe8, 0x0c, 0xa0, 0x9e, 0x9d, 0x20, 0x29, 0xe8, 0x19, 0x1f, 0x65,
- 0x9e, 0x88, 0x69, 0xf3, 0xce, 0x61, 0x35, 0xb3, 0x71, 0x14, 0xf4, 0xac,
- 0x4b, 0xf9, 0xc8, 0xd1, 0x13, 0xac, 0x81, 0x75, 0x89, 0xd4, 0xf4, 0x95,
- 0xc4, 0x47, 0xca, 0xc6, 0xab, 0x08, 0xf1, 0xed, 0x81, 0xb3, 0xe4, 0xed,
- 0x17, 0x31, 0xf0, 0x94, 0x69, 0xa1, 0x93, 0xd3, 0xb6, 0xf2, 0xae, 0xb2,
- 0x4d, 0x75, 0xbb, 0xb3, 0xb2, 0xdd, 0x16, 0x25, 0xeb, 0x04, 0x23, 0x8b,
- 0x9e, 0x51, 0x02, 0x9a, 0x24, 0x03, 0x27, 0x80, 0xb3, 0x8f, 0xf5, 0xc7,
- 0x07, 0xff, 0xdb, 0x04, 0xea, 0x25, 0x1c, 0x09, 0xce, 0xcf, 0x12, 0x33,
- 0x19, 0x19, 0x6a, 0x9d, 0xbc, 0x80, 0x65, 0xe7, 0x77, 0xe4, 0x26, 0xc9,
- 0x2b, 0xac, 0x88, 0xc5, 0xbd, 0xe6, 0x03, 0x6c, 0xc8, 0x40, 0x7e, 0x91,
- 0xd5, 0x00, 0xf2, 0xd8, 0xa2, 0xa8, 0xa1, 0xf8, 0x04, 0x6f, 0xf5, 0x71,
- 0x6e, 0x82, 0x64, 0xec, 0x59, 0xbc, 0xfb, 0x19, 0x60, 0xe8, 0x10, 0x7e,
- 0x5d, 0xcd, 0x84, 0xfd, 0x5d, 0xb2, 0x5c, 0x96, 0x8e, 0x7d, 0x66, 0xe2,
- 0xed, 0x19, 0x05, 0x92, 0x33, 0x52, 0xef, 0x01, 0xf9, 0xfa, 0x57, 0x41,
- 0x0b, 0x85, 0xf2, 0x15, 0x28, 0xeb, 0x94, 0x91, 0x74, 0x0e, 0xc9, 0xc8,
- 0x12, 0x28, 0xb4, 0x45, 0xcb, 0xa2, 0x1d, 0xaa, 0x0e, 0x97, 0xe2, 0x6f,
- 0x19, 0xa2, 0xd5, 0x95, 0x4f, 0xd9, 0xfe, 0x29, 0x9c, 0xd2, 0xea, 0x41,
- 0x55, 0x12, 0xb8, 0xce, 0x95, 0x29, 0xeb, 0xfc, 0x80, 0xf5, 0xea, 0xa1,
- 0x03, 0xec, 0x71, 0xcb, 0x9e, 0xc2, 0x37, 0x5e, 0x8d, 0x9c, 0x2a, 0xf9,
- 0x84, 0x62, 0x13, 0x7f, 0x62, 0x22, 0xe0, 0x5e, 0xe4, 0xc0, 0xde, 0x2b,
- 0xde, 0x10, 0xb2, 0xe5, 0x80, 0xc0, 0x3e, 0x35, 0xad, 0x38, 0x3c, 0xda,
- 0x03, 0x45, 0x33, 0x61, 0xe7, 0x73, 0xf2, 0x89, 0x6e, 0x0b, 0x1c, 0x96,
- 0x73, 0x86, 0x42, 0xee, 0x0b, 0xc4, 0xcd, 0x1d, 0x81, 0x75, 0xf6, 0x62,
- 0x74, 0xce, 0x23, 0x14, 0x5f, 0xf4, 0xcd, 0x37, 0x41, 0x3b, 0xb6, 0x51,
- 0xb2, 0xb2, 0x06, 0xf6, 0xc6, 0x5a, 0x1e, 0xbb, 0x84, 0x20, 0xd4, 0x1c,
- 0x72, 0x59, 0x38, 0x09, 0x0b, 0x1f, 0xfb, 0x82, 0x68, 0x92, 0xdd, 0xef,
- 0xc9, 0x68, 0x03, 0x70, 0xd3, 0x65, 0xde, 0xf9, 0x18, 0xd4, 0x40, 0xbc,
- 0x31, 0xd2, 0x06, 0x86, 0x4e, 0x73, 0xb6, 0x90, 0x0d, 0x85, 0x84, 0x9a,
- 0x50, 0x19, 0x19, 0x1f, 0xf9, 0x7c, 0xd7, 0x82, 0x61, 0x03, 0xd6, 0x6c,
- 0xd3, 0x45, 0x5d, 0xd4, 0x3e, 0x93, 0xdd, 0xc9, 0xe7, 0xb0, 0x63, 0x27,
- 0xdd, 0xa5, 0x5f, 0xb6, 0x30, 0x74, 0x8a, 0x36, 0x74, 0x08, 0x06, 0x0c,
- 0x4a, 0x64, 0xfc, 0x96, 0x69, 0x2d, 0x4d, 0x3d, 0x8f, 0x1e, 0x62, 0x91,
- 0x25, 0xe9, 0x86, 0xb8, 0x42, 0x44, 0x07, 0x18, 0x70, 0x69, 0xbf, 0x3b,
- 0xb7, 0x85, 0x49, 0x40, 0x03, 0x14, 0xea, 0x19, 0xf9, 0xcc, 0x87, 0xf0,
- 0x05, 0x30, 0x84, 0x54, 0xb9, 0xe3, 0x09, 0x25, 0x0b, 0xc4, 0xe1, 0x93,
- 0xb9, 0x77, 0x39, 0xed, 0x82, 0xc0, 0x46, 0x67, 0x6b, 0x96, 0x36, 0x78,
- 0x87, 0x11, 0x65, 0x9b, 0x2b, 0x46, 0xa8, 0xa0, 0xcb, 0x3a, 0x52, 0x04,
- 0x3e, 0x4a, 0x70, 0x6c, 0xba, 0x8f, 0x49, 0xb2, 0x82, 0xa4, 0x2b, 0x20,
- 0xae, 0x7d, 0x9b, 0x44, 0xd5, 0x48, 0x49, 0xd2, 0x1e, 0x46, 0xb2, 0x0a,
- 0x6a, 0xc8, 0xd5, 0xae, 0x77, 0x9e, 0x8c, 0x23, 0x53, 0xbd, 0x16, 0x63,
- 0x0e, 0xb9, 0x9b, 0xec, 0x24, 0x68, 0x6f, 0xa7, 0xab, 0x24, 0x0a, 0x1a,
- 0x8b, 0xad, 0x7a, 0x18, 0x9c, 0xb9, 0xc1, 0x4a, 0x11, 0x18, 0x43, 0x04,
- 0xfe, 0x35, 0x64, 0xe9, 0x01, 0x41, 0xb3, 0xe6, 0x7c, 0x6a, 0x35, 0x47,
- 0xc1, 0x1e, 0xaf, 0x28, 0xa7, 0x2a, 0x8f, 0x2b, 0x4c, 0xf0, 0x98, 0xea,
- 0xd9, 0x8c, 0x78, 0x36, 0x7a, 0xa3, 0xe6, 0x20, 0xb9, 0x11, 0x72, 0x4f,
- 0xba, 0xe2, 0x9e, 0x06, 0x56, 0xd1, 0xd3, 0x18, 0x75, 0xb2, 0x6b, 0xef,
- 0x3a, 0x42, 0x75, 0xf0, 0xf6, 0x48, 0x28, 0x99, 0xea, 0xe1, 0x3e, 0x9a,
- 0x64, 0x4e, 0x76, 0x7b, 0x44, 0x2f, 0x49, 0x35, 0x08, 0x7d, 0x6f, 0x9c,
- 0x13, 0x25, 0x91, 0x53, 0x78, 0x17, 0x05, 0xf5, 0x5f, 0x24, 0x44, 0x27,
- 0x17, 0x6d, 0x46, 0xb0, 0x48, 0x6a, 0x2f, 0xe9, 0x44, 0x03, 0x20, 0x57,
- 0x69, 0x26, 0xe1, 0x73, 0x41, 0xbc, 0x65, 0xc6, 0xd2, 0x19, 0x61, 0xde,
- 0xaa, 0x72, 0xbc, 0x86, 0x87, 0x5f, 0x65, 0x9b, 0x0e, 0x09, 0x27, 0xf3,
- 0x5b, 0x7c, 0x8e, 0xac, 0x10, 0x3c, 0xd0, 0x12, 0xa9, 0x97, 0x2a, 0x9e,
- 0xbc, 0xa5, 0x50, 0x61, 0x7e, 0x40, 0x07, 0xeb, 0x26, 0x18, 0xd0, 0x2c,
- 0x1b, 0xf1, 0x8b, 0x98, 0xa3, 0x96, 0xa5, 0x79, 0x2e, 0xf9, 0x74, 0x2c,
- 0xf3, 0x46, 0xc1, 0x99, 0x9f, 0x32, 0x1a, 0x2b, 0xab, 0x26, 0xac, 0xf3,
- 0x6f, 0x5e, 0x42, 0x1d, 0xce, 0xb5, 0xe7, 0x02, 0x55, 0xb0, 0xbc, 0x06,
- 0x7f, 0xc7, 0x18, 0xbc, 0x58, 0x21, 0x23, 0xea, 0xc0, 0x2b, 0xf2, 0x11,
- 0x89, 0xee, 0x92, 0x80, 0x0b, 0x41, 0x9f, 0x11, 0xa2, 0xd8, 0x1a, 0xd3,
- 0x72, 0xd9, 0xac, 0x02, 0x05, 0x3a, 0x85, 0x04, 0x42, 0xe8, 0x97, 0xe3,
- 0x2f, 0x2e, 0x02, 0x8e, 0x6f, 0x58, 0x1f, 0x02, 0x7d, 0x4e, 0x7a, 0xc5,
- 0x20, 0x93, 0x20, 0xee, 0x52, 0xea, 0x34, 0x9c, 0x2a, 0xa0, 0x54, 0x55,
- 0x26, 0x08, 0x43, 0xe4, 0x67, 0xf4, 0xf0, 0xe4, 0x68, 0xc9, 0xc1, 0x46,
- 0x09, 0xa2, 0xb0, 0x12, 0x3a, 0xca, 0x0f, 0x49, 0x52, 0x25, 0x42, 0x6a,
- 0xf0, 0xc2, 0xb0, 0x08, 0xa8, 0x1e, 0x7f, 0x1e, 0x2d, 0xc8, 0x88, 0x31,
- 0xcd, 0x95, 0x20, 0xd4, 0x9b, 0xca, 0x25, 0x45, 0xda, 0x12, 0xde, 0x82,
- 0xb3, 0x44, 0xa2, 0x2e, 0x85, 0x93, 0x2f, 0x21, 0x14, 0x02, 0x4a, 0x50,
- 0x68, 0xd1, 0xa7, 0x3c, 0x2f, 0x6a, 0xf2, 0x2e, 0xa8, 0x12, 0x6a, 0x10,
- 0x66, 0xa3, 0xe8, 0x78, 0x3c, 0x7b, 0xd4, 0xe3, 0x25, 0xbc, 0x80, 0xfe,
- 0x70, 0x3a, 0x11, 0x3a, 0x07, 0xc0, 0xa5, 0x64, 0xa6, 0x17, 0x10, 0x58,
- 0xa3, 0x1f, 0x6a, 0x05, 0x42, 0x47, 0xf3, 0xc1, 0x45, 0x5b, 0xbd, 0xe0,
- 0x4a, 0x1b, 0x5b, 0x7c, 0x84, 0xf1, 0x45, 0xe3, 0x03, 0xb7, 0x59, 0x5c,
- 0xbc, 0xc2, 0xbe, 0xc1, 0x68, 0x18, 0x75, 0x59, 0x16, 0xe2, 0x17, 0x96,
- 0xb3, 0x9c, 0xf9, 0x16, 0xf6, 0x35, 0x75, 0x6f, 0x7b, 0x3e, 0x91, 0x57,
- 0x69, 0x11, 0xde, 0xf9, 0xf0, 0xd7, 0x85, 0x63, 0x77, 0xf5, 0x0b, 0x02,
- 0x6c, 0x27, 0x64, 0x57, 0xde, 0x65, 0xab, 0x50, 0x7f, 0x0c, 0x32, 0x20,
- 0xda, 0x78, 0x09, 0xc4, 0x3a, 0x0e, 0xe9, 0x8d, 0x26, 0x08, 0xf3, 0xa5,
- 0x64, 0x90, 0x77, 0x58, 0xde, 0x13, 0x27, 0xd6, 0xf1, 0x40, 0xe1, 0x34,
- 0x87, 0x08, 0xe1, 0x7f, 0xea, 0xb4, 0x94, 0x7a, 0x8c, 0xac, 0xb8, 0xb7,
- 0x58, 0xff, 0xc2, 0x34, 0x35, 0x14, 0x7e, 0x75, 0x23, 0x05, 0x06, 0xae,
- 0xcf, 0x69, 0x30, 0x69, 0xd4, 0x95, 0xb7, 0x6c, 0xad, 0x83, 0x13, 0x53,
- 0x93, 0x02, 0x0a, 0xd0, 0xf3, 0x84, 0x52, 0x42, 0xeb, 0x9d, 0x16, 0x61,
- 0x98, 0x3f, 0x48, 0x2d, 0xf9, 0x13, 0xc1, 0x42, 0x27, 0x2d, 0xb3, 0xc7,
- 0x61, 0x09, 0x75, 0x88, 0x39, 0xe8, 0x48, 0x7c, 0x91, 0xd3, 0x6a, 0x5c,
- 0xd5, 0x05, 0x32, 0x2a, 0x19, 0x20, 0xb6, 0xb0, 0x03, 0x2f, 0x7b, 0x47,
- 0xc6, 0x07, 0x35, 0xc3, 0x06, 0x5e, 0xe1, 0xde, 0x86, 0x58, 0xfc, 0x8a,
- 0x9c, 0xac, 0x82, 0x21, 0xc4, 0x26, 0x28, 0x82, 0x05, 0xe0, 0x61, 0x0b,
- 0xed, 0xa1, 0xa6, 0xc5, 0xb5, 0xec, 0xf6, 0x9c, 0x05, 0x45, 0xb6, 0x86,
- 0x7c, 0xb6, 0xa4, 0x3d, 0x7f, 0xc4, 0xb5, 0x8f, 0xc4, 0xef, 0x6d, 0x8d,
- 0xfa, 0x73, 0x5d, 0x35, 0x1f, 0x98, 0x3d, 0x9d, 0xf3, 0xc9, 0x26, 0xe2,
- 0x0a, 0x7d, 0xcd, 0x9e, 0x87, 0xf3, 0x4d, 0xf1, 0x30, 0x92, 0x99, 0xa4,
- 0xbe, 0x13, 0x53, 0xcc, 0x7e, 0x4c, 0x61, 0xbf, 0x1a, 0xe3, 0x4d, 0x8d,
- 0x59, 0xb2, 0x46, 0x48, 0x10, 0xf5, 0xab, 0xe0, 0x84, 0x4c, 0x97, 0x03,
- 0x52, 0x0b, 0x6e, 0x4b, 0x23, 0x92, 0xf3, 0x09, 0x06, 0x08, 0x58, 0x98,
- 0x52, 0x88, 0x5f, 0x51, 0x1d, 0x57, 0xd1, 0x1b, 0x88, 0xb6, 0xd4, 0x6d,
- 0x02, 0xc6, 0xac, 0x39, 0x58, 0x48, 0x69, 0x84, 0x7e, 0xe0, 0x44, 0x54,
- 0x8e, 0x55, 0xba, 0x97, 0xa4, 0x5c, 0x52, 0x2c, 0x60, 0xf9, 0xd3, 0x47,
- 0xf6, 0x0d, 0x51, 0x5a, 0x0a, 0x65, 0x33, 0xfa, 0xb0, 0x17, 0xb5, 0x11,
- 0x40, 0x29, 0x97, 0xe2, 0xab, 0xc6, 0x5f, 0x2a, 0x9f, 0x38, 0x16, 0x01,
- 0x17, 0x45, 0xb5, 0x40, 0xc6, 0xa9, 0xbe, 0x32, 0x71, 0x19, 0x89, 0x5e,
- 0x93, 0xe4, 0xae, 0x44, 0xc7, 0x83, 0x40, 0x00, 0x13, 0x2b, 0x45, 0x01,
- 0x7a, 0xef, 0xd2, 0x92, 0x94, 0xd6, 0x9c, 0x37, 0xb4, 0x5b, 0x71, 0x76,
- 0x63, 0xdc, 0xaf, 0xae, 0x94, 0x54, 0x38, 0x14, 0xd1, 0xa4, 0x4e, 0x84,
- 0x72, 0x46, 0x76, 0x94, 0xd9, 0x51, 0xfe, 0x54, 0x94, 0x84, 0xe6, 0x32,
- 0x54, 0x36, 0x42, 0x36, 0xe5, 0x8f, 0x22, 0x01, 0x3a, 0xf3, 0x28, 0x47,
- 0x66, 0x91, 0x4a, 0xef, 0x67, 0x03, 0x47, 0x97, 0xbc, 0xbc, 0x80, 0x4b,
- 0x61, 0x59, 0x4d, 0x79, 0xe4, 0x1c, 0xe0, 0xca, 0xb1, 0x85, 0xcc, 0x3e,
- 0xd4, 0x62, 0xff, 0xc8, 0x3f, 0xfe, 0x00, 0x88, 0x5c, 0xe0, 0xcf, 0x89,
- 0x7d, 0x2d, 0xb2, 0x1a, 0xf5, 0xfd, 0x15, 0x25, 0xbd, 0xbe, 0x2a, 0x4a,
- 0xca, 0xab, 0xd4, 0xa5, 0xb7, 0xe7, 0x13, 0xe8, 0xdb, 0x3a, 0xa1, 0x79,
- 0x19, 0xdc, 0x5f, 0x44, 0x9d, 0x78, 0x4d, 0xd6, 0x69, 0x24, 0x29, 0x47,
- 0x83, 0xdc, 0x1f, 0x7e, 0x8c, 0xd4, 0xf7, 0x8f, 0xb0, 0x4f, 0x3d, 0x32,
- 0x48, 0x89, 0xa5, 0x01, 0xfd, 0x7c, 0xba, 0x40, 0x88, 0x2a, 0xe6, 0xff,
- 0x44, 0x7d, 0x25, 0xd4, 0xc3, 0x49, 0x7a, 0x8b, 0xba, 0x62, 0x7f, 0x03,
- 0x40, 0x76, 0x24, 0xfc, 0x9a, 0x69, 0xb0, 0xb8, 0x8f, 0x4c, 0xc3, 0x27,
- 0xcb, 0x20, 0xea, 0x14, 0x86, 0x22, 0x67, 0x80, 0xf2, 0x99, 0xda, 0x94,
- 0x94, 0x37, 0x88, 0x03, 0x2d, 0x7c, 0x1a, 0x2c, 0x28, 0x24, 0x6f, 0x81,
- 0x56, 0x48, 0x7f, 0x1b, 0x69, 0xe0, 0xb7, 0xcc, 0x71, 0xa8, 0x2b, 0xa5,
- 0xbe, 0xcc, 0x71, 0x70, 0x43, 0x96, 0x41, 0x00, 0xea, 0x3d, 0x62, 0x39,
- 0x88, 0x14, 0xfc, 0xd4, 0xe6, 0x20, 0x3d, 0xb5, 0xf9, 0x60, 0xb5, 0x51,
- 0x4d, 0xe1, 0x07, 0x40, 0x50, 0x42, 0x4d, 0xf7, 0x38, 0x2c, 0x60, 0x15,
- 0xde, 0x82, 0x56, 0x2b, 0x36, 0x49, 0x99, 0x92, 0xfe, 0xd7, 0xa1, 0x48,
- 0xd4, 0x16, 0x0c, 0x11, 0x73, 0x04, 0x8c, 0x5d, 0x12, 0x0b, 0x7b, 0x0d,
- 0x20, 0x3b, 0x3c, 0x59, 0xd2, 0xd8, 0x13, 0x23, 0xee, 0x9e, 0x7d, 0x4d,
- 0xb2, 0x54, 0x96, 0x23, 0x9e, 0x65, 0xe4, 0x9d, 0x2b, 0xae, 0xc5, 0xc9,
- 0xb9, 0x76, 0x2e, 0x29, 0xb9, 0x69, 0xd3, 0x66, 0x15, 0x8c, 0x8f, 0xd8,
- 0x21, 0xec, 0x7a, 0x8a, 0xc7, 0x15, 0x40, 0xe5, 0xe8, 0x6c, 0x49, 0x31,
- 0x3a, 0x97, 0xde, 0x1e, 0xe3, 0x22, 0x6d, 0x76, 0x85, 0x04, 0x01, 0xc1,
- 0xcf, 0x95, 0x01, 0x6a, 0x2b, 0xe3, 0x62, 0x7d, 0xed, 0x71, 0x10, 0x16,
- 0xde, 0xf3, 0x0a, 0xfb, 0x1c, 0x8f, 0x42, 0xf4, 0xbe, 0x70, 0x3a, 0x72,
- 0x60, 0xdc, 0x27, 0xf1, 0xf7, 0xf7, 0xc9, 0xe0, 0x34, 0xff, 0xe5, 0x24,
- 0xff, 0x81, 0x0c, 0x16, 0xa7, 0xb4, 0x2b, 0xcd, 0xc1, 0x02, 0xf1, 0x14,
- 0x51, 0xca, 0xca, 0xf0, 0x54, 0x03, 0x33, 0x0b, 0x48, 0x42, 0xff, 0x5e,
- 0x4f, 0xea, 0xc4, 0x91, 0x01, 0x51, 0xb8, 0x78, 0x96, 0x64, 0x44, 0x4b,
- 0x2e, 0xfe, 0x4c, 0x51, 0x8c, 0xb6, 0x75, 0xa5, 0x3a, 0xb0, 0xe2, 0x52,
- 0x62, 0x0e, 0x20, 0x0a, 0x4f, 0x49, 0x59, 0xdb, 0x41, 0xb5, 0x23, 0x54,
- 0x11, 0x10, 0xf4, 0xf0, 0x7d, 0x43, 0x5f, 0x0c, 0xb5, 0x7e, 0xdb, 0x78,
- 0xf9, 0xbc, 0x0d, 0x3e, 0x4d, 0x1a, 0xad, 0x43, 0x56, 0x4e, 0x7c, 0x29,
- 0xa5, 0xba, 0x63, 0xa7, 0xf5, 0x3c, 0x44, 0x87, 0xb9, 0x70, 0x5f, 0x91,
- 0x4b, 0xa7, 0x59, 0xb6, 0x6a, 0x9d, 0x8a, 0x14, 0xc4, 0x84, 0x16, 0x6e,
- 0x11, 0x8a, 0x38, 0x36, 0x4d, 0xe4, 0xc4, 0x4b, 0x68, 0xcc, 0x69, 0xd5,
- 0xb6, 0x9b, 0x98, 0x11, 0x3f, 0xb9, 0x39, 0x7a, 0xcb, 0x39, 0x43, 0x4c,
- 0xb4, 0x14, 0xe4, 0x1a, 0xd3, 0x97, 0xdd, 0x0d, 0xef, 0x2e, 0x5b, 0x86,
- 0xde, 0xcc, 0x01, 0x5d, 0xf4, 0x3b, 0x6d, 0x52, 0x23, 0x55, 0x4a, 0xdb,
- 0xa4, 0x85, 0x12, 0xbb, 0xac, 0xf6, 0x9c, 0x98, 0x24, 0xde, 0x17, 0x8b,
- 0x34, 0xd4, 0xc3, 0xc8, 0x04, 0x12, 0x28, 0xbe, 0x5b, 0xa5, 0x79, 0x2a,
- 0x75, 0x57, 0xa4, 0x59, 0xfa, 0xbe, 0xf8, 0xe1, 0x32, 0xdd, 0x4a, 0x73,
- 0x19, 0x01, 0xdb, 0x84, 0xf8, 0x05, 0xe2, 0x52, 0x2d, 0x93, 0x31, 0xec,
- 0x41, 0xb5, 0x3c, 0xcb, 0x92, 0x18, 0x38, 0xb4, 0x27, 0xa2, 0x53, 0xde,
- 0x91, 0xe0, 0x5f, 0xc1, 0x74, 0x60, 0x3b, 0xe3, 0xb7, 0x8e, 0x25, 0xee,
- 0x02, 0x96, 0xed, 0x1d, 0x9c, 0x27, 0x36, 0x17, 0x6e, 0xf7, 0x21, 0x6a,
- 0x68, 0x39, 0x0e, 0x9d, 0x3d, 0x6e, 0x14, 0x36, 0x95, 0x9e, 0x06, 0xd3,
- 0xc6, 0x9f, 0x9d, 0x23, 0x6b, 0x97, 0x6a, 0xa1, 0xae, 0x4c, 0x3c, 0x9a,
- 0x73, 0x02, 0x62, 0x20, 0xa7, 0x8b, 0xd6, 0x12, 0x36, 0xc9, 0x3f, 0x19,
- 0x01, 0x6c, 0x48, 0xa3, 0x19, 0x9d, 0x9e, 0xcb, 0x09, 0x41, 0xf1, 0x77,
- 0x52, 0x63, 0x97, 0x09, 0x34, 0xf1, 0x70, 0xe3, 0x17, 0x7a, 0x42, 0x43,
- 0x31, 0xaa, 0x94, 0x9c, 0xd5, 0xef, 0x7c, 0x45, 0xd0, 0x8d, 0x6b, 0x4c,
- 0x70, 0xbc, 0xdd, 0xf3, 0x23, 0x51, 0x22, 0xae, 0xd6, 0x39, 0xe3, 0x16,
- 0xa6, 0xb9, 0xd9, 0xca, 0x28, 0x6a, 0x4f, 0xd4, 0x42, 0xb9, 0xce, 0xdc,
- 0xe5, 0x1e, 0x05, 0xf9, 0xd5, 0x01, 0x5a, 0x88, 0x56, 0x07, 0xc4, 0x8a,
- 0x2c, 0x00, 0x9d, 0x1b, 0x2d, 0x93, 0xb1, 0xa2, 0x13, 0x7d, 0x86, 0x56,
- 0xe7, 0xad, 0x75, 0x60, 0x83, 0xd1, 0x71, 0xa2, 0x6d, 0x69, 0xd6, 0x06,
- 0xae, 0x52, 0x2b, 0xaa, 0x0d, 0x5f, 0x59, 0xc0, 0x75, 0x72, 0xcd, 0xa0,
- 0x72, 0x6f, 0x81, 0x03, 0xed, 0x0b, 0x70, 0x9b, 0xc1, 0x28, 0x2f, 0x46,
- 0x0f, 0x6a, 0xc6, 0xf9, 0xde, 0x1c, 0x83, 0x95, 0x1d, 0x2f, 0x89, 0x86,
- 0x05, 0xf0, 0x71, 0xfd, 0xb2, 0x8e, 0x7c, 0x7b, 0xaa, 0xdd, 0x73, 0xa9,
- 0x71, 0x6e, 0xb6, 0x94, 0x33, 0x45, 0x43, 0x27, 0xd1, 0x22, 0x7b, 0xd5,
- 0xa2, 0x88, 0x19, 0x0c, 0x19, 0xfe, 0x5f, 0x0b, 0x19, 0xa0, 0x44, 0x52,
- 0x06, 0x92, 0x62, 0x0d, 0x65, 0x7f, 0x5c, 0x42, 0x17, 0xf8, 0x1a, 0x83,
- 0x96, 0x0e, 0x94, 0x30, 0xa2, 0xa8, 0x50, 0x5e, 0xf7, 0xeb, 0x16, 0x65,
- 0x5c, 0x4e, 0x9f, 0x34, 0xd2, 0x07, 0x6f, 0x1e, 0x21, 0x15, 0x34, 0x36,
- 0x51, 0x5e, 0x22, 0xa5, 0xd8, 0x56, 0x86, 0x21, 0xce, 0x1b, 0x83, 0xc1,
- 0xe2, 0xe4, 0xf6, 0xa7, 0x77, 0x87, 0xfb, 0x44, 0x8b, 0x49, 0x54, 0x90,
- 0xdb, 0x46, 0x49, 0x8d, 0x28, 0x50, 0x69, 0x2c, 0x43, 0x10, 0x49, 0x21,
- 0xc7, 0x4e, 0x0b, 0xf4, 0x08, 0x59, 0xa6, 0x31, 0xc3, 0xc0, 0x5f, 0x20,
- 0x68, 0xee, 0x0f, 0x35, 0xbe, 0x55, 0x2a, 0x56, 0xcc, 0x8c, 0xd0, 0x71,
- 0x67, 0xe9, 0x22, 0x40, 0x04, 0x80, 0x16, 0x55, 0x04, 0x9b, 0x56, 0x5c,
- 0x18, 0x62, 0x48, 0xcb, 0x76, 0x10, 0xa7, 0x21, 0x8c, 0x2d, 0x87, 0xa5,
- 0x84, 0xec, 0x06, 0xae, 0x38, 0x10, 0x40, 0xe9, 0x20, 0x7a, 0x5e, 0xf4,
- 0x7f, 0xab, 0x3a, 0x13, 0xc7, 0x92, 0xa5, 0x09, 0xa5, 0x8e, 0x2c, 0xba,
- 0x3f, 0x8a, 0xe8, 0x42, 0x76, 0x17, 0xe7, 0x9a, 0xd0, 0xc8, 0x6d, 0xb5,
- 0x97, 0x82, 0xf9, 0x14, 0x25, 0xc9, 0xd0, 0xa7, 0x66, 0xcd, 0xd1, 0xc9,
- 0x0b, 0xf6, 0xb5, 0xcd, 0xf1, 0x81, 0x89, 0x59, 0xc3, 0xd1, 0xce, 0x7c,
- 0x41, 0x82, 0x2f, 0x45, 0xdb, 0x6e, 0x57, 0x57, 0x0b, 0x7a, 0xe4, 0xc1,
- 0x4f, 0x08, 0x06, 0xd5, 0xa0, 0xca, 0xef, 0x77, 0x3e, 0x64, 0x0a, 0x07,
- 0x09, 0x6f, 0x12, 0x92, 0xb2, 0x92, 0xfb, 0x75, 0xeb, 0x74, 0x9e, 0x56,
- 0x52, 0xa8, 0xcf, 0x92, 0xb7, 0xa6, 0x91, 0xaf, 0x79, 0xe2, 0xe1, 0x79,
- 0x64, 0x1d, 0x8a, 0x2d, 0x05, 0xda, 0xd4, 0xf3, 0x9d, 0xf4, 0xc8, 0xb8,
- 0x5a, 0xd1, 0xc1, 0xd7, 0x7b, 0xa5, 0xfb, 0x73, 0x2d, 0x2f, 0x9e, 0x2c,
- 0xb1, 0x5f, 0x48, 0x69, 0x07, 0xbd, 0xc7, 0x45, 0xa3, 0x35, 0xb2, 0x7f,
- 0xa2, 0x25, 0xdd, 0x8e, 0x8c, 0x2b, 0xc6, 0xaf, 0xe8, 0x58, 0xa3, 0xde,
- 0x18, 0x06, 0x8e, 0xfe, 0x2f, 0x3d, 0x3e, 0xa1, 0xb8, 0x21, 0xdf, 0xec,
- 0x31, 0x71, 0x2f, 0xc3, 0xd1, 0xa9, 0x87, 0x3f, 0xf5, 0xa5, 0x8b, 0x52,
- 0xa5, 0x1b, 0xa7, 0xf8, 0xe4, 0x47, 0x48, 0xff, 0x37, 0x4e, 0x5c, 0xc5,
- 0xf3, 0x0d, 0x7b, 0x06, 0xa4, 0xca, 0x8f, 0x0c, 0x39, 0x58, 0x63, 0xf0,
- 0x68, 0x26, 0xf4, 0x94, 0xf5, 0x89, 0x0c, 0x8d, 0x88, 0x11, 0x77, 0x2b,
- 0x89, 0x51, 0xaf, 0x3f, 0xd0, 0x45, 0xd6, 0xcd, 0xae, 0xa8, 0x42, 0x67,
- 0xdb, 0x9d, 0xe8, 0x8b, 0x86, 0x69, 0x0a, 0x75, 0x4f, 0x29, 0x05, 0x06,
- 0xad, 0x5b, 0xae, 0xea, 0x92, 0xbb, 0x55, 0x9d, 0xd9, 0x13, 0x4d, 0xc1,
- 0xda, 0x92, 0xfa, 0x3b, 0xdb, 0xe4, 0x9a, 0xea, 0x5b, 0xd5, 0x01, 0xb0,
- 0x5e, 0x13, 0x2b, 0xd6, 0xdc, 0xe0, 0xea, 0x9b, 0xae, 0x25, 0xe9, 0xb0,
- 0x8a, 0x80, 0x24, 0x4a, 0x6c, 0xe9, 0xff, 0x2f, 0x20, 0xa7, 0xd6, 0x02,
- 0xb5, 0xa1, 0x14, 0x79, 0x63, 0x3e, 0xc7, 0x5e, 0x42, 0xf6, 0xff, 0xfb,
- 0x76, 0xb4, 0x92, 0xb8, 0xce, 0xd5, 0x14, 0x32, 0xd1, 0xa6, 0x2f, 0x80,
- 0x18, 0x40, 0x49, 0xfb, 0x3f, 0xeb, 0xe5, 0x0b, 0x57, 0xf2, 0x04, 0xa3,
- 0x44, 0xc9, 0xa9, 0xb4, 0x9f, 0x0d, 0x01, 0x51, 0x04, 0x1c, 0x17, 0x5e,
- 0x5a, 0xa9, 0x3c, 0x43, 0xf7, 0x00, 0xe5, 0x1a, 0x7b, 0x2e, 0x8d, 0xe7,
- 0x4d, 0xaa, 0xa3, 0x87, 0xda, 0xba, 0x26, 0x73, 0xad, 0x9d, 0xbf, 0xe8,
- 0x99, 0x48, 0x0b, 0x19, 0x0b, 0x33, 0x1f, 0x59, 0x11, 0xa0, 0x3b, 0xe7,
- 0x3a, 0x0a, 0x83, 0x43, 0x09, 0x55, 0x04, 0xfc, 0x18, 0x90, 0x50, 0xb6,
- 0x1c, 0x36, 0x6e, 0x3d, 0xf5, 0x45, 0x08, 0xd3, 0x18, 0xfa, 0x23, 0x33,
- 0xa9, 0x14, 0xe8, 0x37, 0x5b, 0xec, 0xd9, 0x48, 0x4f, 0x9a, 0x6d, 0x62,
- 0xcb, 0x08, 0x17, 0x28, 0x7d, 0x62, 0xdf, 0x26, 0x32, 0x9e, 0xfe, 0x56,
- 0xa6, 0x2f, 0x74, 0x14, 0x0a, 0x9f, 0xc7, 0x15, 0xfd, 0x42, 0xc1, 0xb8,
- 0xc7, 0x00, 0x0f, 0xa9, 0x97, 0x4f, 0x37, 0x75, 0x46, 0x66, 0xea, 0xa4,
- 0x55, 0x24, 0xed, 0x0b, 0x8a, 0x21, 0x2f, 0x0a, 0x2b, 0x5b, 0xaf, 0x6f,
- 0xe2, 0xa6, 0x4d, 0x34, 0xb7, 0xe7, 0x48, 0x96, 0x5c, 0x7c, 0x8f, 0x3e,
- 0xd3, 0xc8, 0x7f, 0x20, 0x44, 0x20, 0xef, 0xa0, 0x98, 0x27, 0x6c, 0x4f,
- 0x27, 0x00, 0x0e, 0x87, 0x94, 0x92, 0x20, 0xdd, 0x66, 0x90, 0xa6, 0xa8,
- 0x33, 0xc1, 0x71, 0x32, 0x42, 0x6a, 0xcb, 0x62, 0x47, 0x59, 0xc2, 0xee,
- 0x3d, 0x4f, 0x17, 0x44, 0xc6, 0x1d, 0xc1, 0x84, 0xb0, 0x0b, 0x39, 0x3f,
- 0x41, 0xbd, 0x05, 0x4f, 0xe4, 0x14, 0x4d, 0x7b, 0x4d, 0x1b, 0x2c, 0x4b,
- 0x0a, 0x0b, 0x0b, 0x4c, 0x6b, 0x70, 0xd1, 0xbe, 0xf9, 0x13, 0x65, 0x91,
- 0x0c, 0x2a, 0xe8, 0x1c, 0x72, 0x44, 0xf6, 0x3c, 0x9c, 0x57, 0xe8, 0xf0,
- 0x27, 0x94, 0x81, 0xa8, 0x0a, 0xec, 0x9d, 0x13, 0x93, 0x80, 0x9d, 0xa5,
- 0x0e, 0x15, 0xc7, 0x39, 0x7e, 0x6d, 0x0e, 0x67, 0x88, 0x7e, 0x7a, 0x89,
- 0xa0, 0xd5, 0x54, 0x83, 0x58, 0xc8, 0x3f, 0x20, 0x5f, 0x20, 0x5c, 0xd4,
- 0xf2, 0x39, 0xa8, 0x47, 0xd1, 0x7f, 0xae, 0x5d, 0x06, 0x20, 0x2d, 0xb9,
- 0x30, 0x86, 0xea, 0x72, 0x31, 0x4a, 0xc7, 0x20, 0x4f, 0x42, 0x2f, 0x2f,
- 0x01, 0x63, 0x5c, 0xd4, 0x59, 0x42, 0x9e, 0x36, 0x2d, 0x17, 0xf5, 0xc6,
- 0xb3, 0xd7, 0x16, 0x0f, 0x37, 0x4f, 0xb2, 0xd6, 0x85, 0xbb, 0x78, 0xf9,
- 0x68, 0x26, 0xd5, 0x48, 0x4d, 0x32, 0x74, 0x53, 0xc2, 0x4b, 0x51, 0x53,
- 0x62, 0x6f, 0x86, 0x55, 0x67, 0x29, 0x73, 0x51, 0x21, 0x13, 0x6f, 0x8b,
- 0xfe, 0xe9, 0xa8, 0x53, 0x71, 0xdb, 0xd6, 0x25, 0x7b, 0xb0, 0x23, 0x25,
- 0x37, 0x92, 0x4c, 0xad, 0xf1, 0x99, 0xff, 0x24, 0x56, 0x1f, 0x0d, 0xa2,
- 0xf8, 0x76, 0xa8, 0x02, 0x65, 0x7e, 0x52, 0xd5, 0x9d, 0x16, 0xcf, 0xb8,
- 0x5a, 0x17, 0x66, 0xf6, 0xb4, 0x54, 0x27, 0x75, 0x83, 0xb4, 0xda, 0x69,
- 0x2f, 0xc8, 0x70, 0x2d, 0x5b, 0xde, 0xbc, 0xec, 0x6e, 0xbe, 0x4e, 0x34,
- 0xa1, 0xc1, 0xe9, 0x22, 0x0a, 0x43, 0x8f, 0x4f, 0x87, 0x6a, 0x70, 0xe8,
- 0x97, 0x52, 0x57, 0xac, 0x74, 0x22, 0xb3, 0xcd, 0xaf, 0x3b, 0x22, 0x16,
- 0xcc, 0xdf, 0x6b, 0xca, 0xab, 0x26, 0x85, 0xea, 0xc3, 0x93, 0x48, 0x88,
- 0xdf, 0xca, 0x70, 0x46, 0xd0, 0xfe, 0x2d, 0x17, 0xe4, 0xc1, 0x30, 0x6b,
- 0xbf, 0xb0, 0x1c, 0x5d, 0x41, 0xef, 0xb7, 0xd3, 0x39, 0xe6, 0x05, 0x53,
- 0x1d, 0x64, 0xd6, 0xe2, 0x75, 0x74, 0x9b, 0x26, 0x13, 0x7f, 0x43, 0x03,
- 0xbf, 0xe4, 0x0e, 0x24, 0x06, 0xfd, 0x0e, 0x48, 0x72, 0x4b, 0x13, 0xb4,
- 0x9d, 0x5d, 0x97, 0xa6, 0x24, 0x3c, 0x98, 0xa8, 0xfe, 0xbc, 0xc8, 0xa5,
- 0xde, 0xed, 0xd9, 0x71, 0xf2, 0x54, 0xcb, 0x22, 0x4a, 0xd9, 0x12, 0x02,
- 0x4b, 0xfc, 0xd1, 0xa5, 0xd6, 0x50, 0xeb, 0x6d, 0xd3, 0xec, 0xe5, 0x79,
- 0xaa, 0x0f, 0xcb, 0x22, 0x17, 0x01, 0x2c, 0x29, 0xfa, 0x2c, 0x79, 0xc8,
- 0x94, 0xa7, 0xae, 0xac, 0x5f, 0xb3, 0xce, 0x00, 0x0c, 0x72, 0x78, 0xef,
- 0xd4, 0x0a, 0x1a, 0x5a, 0x03, 0x7d, 0xad, 0x33, 0x52, 0x22, 0x65, 0xf8,
- 0xa4, 0x99, 0x96, 0x50, 0x37, 0xa8, 0x91, 0x50, 0x1c, 0xf1, 0xba, 0x48,
- 0x19, 0x13, 0xce, 0xf6, 0xac, 0x26, 0x56, 0x53, 0x9e, 0x8e, 0x03, 0xa1,
- 0xd8, 0x05, 0xc5, 0x7d, 0x9e, 0x75, 0x7a, 0xd3, 0x1c, 0x71, 0x4e, 0x6c,
- 0x70, 0xaf, 0x62, 0x00, 0x73, 0x77, 0x18, 0xad, 0x24, 0xaa, 0xfa, 0xea,
- 0x68, 0xd9, 0xf1, 0xcf, 0xfd, 0xd0, 0x59, 0xdb, 0xaf, 0x52, 0x7c, 0xd0,
- 0xf9, 0xd7, 0x3d, 0x87, 0x95, 0xfa, 0x68, 0x76, 0x02, 0xcd, 0x83, 0x30,
- 0x26, 0xca, 0x69, 0x51, 0x09, 0x9f, 0xa5, 0xb9, 0x29, 0x54, 0xa5, 0x55,
- 0xfe, 0xf9, 0xae, 0x6d, 0x6b, 0xc5, 0x59, 0xba, 0xb8, 0xe8, 0x16, 0x8d,
- 0x1c, 0x0c, 0x12, 0xc1, 0x29, 0x72, 0xe2, 0xe5, 0x3b, 0x74, 0x1c, 0x66,
- 0x01, 0xec, 0xd0, 0x93, 0xe5, 0x52, 0xaa, 0x0e, 0xd0, 0x01, 0x92, 0xf6,
- 0x8b, 0xc3, 0xeb, 0xdb, 0x35, 0xb7, 0xcf, 0x3b, 0x47, 0x8c, 0x26, 0x5e,
- 0x28, 0xac, 0x49, 0x23, 0xce, 0x88, 0x1f, 0x6e, 0x8e, 0xd2, 0x93, 0x21,
- 0xcd, 0xa4, 0xea, 0x7e, 0xda, 0xb9, 0x2c, 0x20, 0xc5, 0x9c, 0x9c, 0x31,
- 0xc0, 0x86, 0x32, 0x01, 0xd3, 0x32, 0x42, 0x3c, 0x47, 0xed, 0x75, 0x03,
- 0xb7, 0x44, 0x44, 0xcc, 0xa5, 0x33, 0xb5, 0x48, 0x24, 0xb8, 0x46, 0xae,
- 0x98, 0x30, 0x7e, 0x41, 0x06, 0x8c, 0x06, 0x89, 0x67, 0x7f, 0x1e, 0x91,
- 0x48, 0x66, 0x4e, 0x4a, 0x19, 0xca, 0x8b, 0xda, 0x7b, 0x9c, 0x17, 0xcb,
- 0x83, 0x11, 0x03, 0x96, 0xea, 0xcf, 0x7d, 0x1e, 0x83, 0x39, 0x39, 0x93,
- 0x0e, 0x4e, 0x85, 0xd1, 0x8b, 0xd2, 0xbd, 0xa6, 0xdc, 0xba, 0x15, 0x91,
- 0x63, 0xbc, 0xf9, 0x55, 0x2e, 0x6d, 0x78, 0xa3, 0xb2, 0x3f, 0x31, 0x9c,
- 0x2e, 0x10, 0x00, 0x20, 0x16, 0xd6, 0x44, 0xff, 0xa6, 0xe3, 0x4d, 0x71,
- 0xb6, 0x78, 0x0d, 0xb6, 0x1d, 0xe8, 0x25, 0x05, 0xf8, 0x14, 0xbe, 0x9d,
- 0x68, 0xf7, 0xdb, 0xb4, 0xe4, 0x01, 0xf6, 0x50, 0x64, 0xf2, 0xb0, 0x5b,
- 0xfd, 0x42, 0x2e, 0x4f, 0x80, 0x42, 0x82, 0x9d, 0x98, 0x5b, 0xa0, 0x0f,
- 0x96, 0x8e, 0x54, 0x2c, 0x63, 0x0f, 0x2f, 0xd3, 0x46, 0xbc, 0x45, 0x33,
- 0x4b, 0x29, 0x4d, 0x0e, 0x52, 0x44, 0x1e, 0x86, 0x64, 0x6c, 0xad, 0x8b,
- 0x41, 0x54, 0xa8, 0xae, 0xa2, 0xda, 0x08, 0x11, 0x92, 0x8c, 0x6b, 0x3a,
- 0x34, 0xdc, 0x62, 0x78, 0x23, 0xaf, 0x37, 0x73, 0x57, 0xb6, 0x93, 0xa2,
- 0x21, 0x35, 0xe6, 0x5a, 0xce, 0x8a, 0x73, 0xf5, 0xbd, 0x77, 0x0f, 0xf2,
- 0x08, 0xf1, 0x94, 0xd1, 0x34, 0x9d, 0x06, 0xda, 0x33, 0xf8, 0x6e, 0x4c,
- 0x69, 0x95, 0x61, 0x85, 0xb3, 0x5e, 0x9b, 0xc4, 0x71, 0xc4, 0x0e, 0x03,
- 0x1a, 0x6d, 0xe9, 0x3c, 0x2a, 0x9f, 0x76, 0xf1, 0x74, 0x98, 0x10, 0x0b,
- 0xfd, 0xc1, 0x40, 0x54, 0x51, 0x86, 0x91, 0x81, 0xce, 0x56, 0x41, 0xc0,
- 0xed, 0x8c, 0x1e, 0xd4, 0xc1, 0x1c, 0x51, 0x87, 0x83, 0xb3, 0xb7, 0xed,
- 0x0c, 0x61, 0xc2, 0xee, 0x18, 0x0b, 0xf6, 0x5a, 0x64, 0xbb, 0x66, 0x80,
- 0xa5, 0x08, 0x30, 0x3f, 0x7c, 0x82, 0xd4, 0xf4, 0x38, 0x35, 0xc7, 0x2e,
- 0x67, 0xc8, 0xdc, 0xd2, 0x4f, 0xfd, 0x80, 0x1d, 0xc3, 0x34, 0x6a, 0x64,
- 0x1d, 0x0c, 0x15, 0x0e, 0x86, 0x4f, 0x78, 0x10, 0x4e, 0xdc, 0x6f, 0x3c,
- 0x8f, 0xea, 0xb5, 0x7b, 0xd7, 0xb1, 0xe0, 0x3d, 0x4c, 0x2d, 0x9a, 0xc6,
- 0x0d, 0x62, 0x98, 0x98, 0xeb, 0x86, 0x07, 0xa3, 0xd3, 0xf4, 0x40, 0xef,
- 0x6d, 0x22, 0xad, 0xc8, 0xb0, 0x09, 0x02, 0x4d, 0x37, 0x32, 0x76, 0x73,
- 0xbf, 0xc1, 0xf9, 0xbd, 0xed, 0x4e, 0xd9, 0xeb, 0x25, 0x5f, 0xe6, 0x28,
- 0x36, 0x0e, 0x46, 0xe6, 0x0d, 0x87, 0x83, 0xa6, 0xc4, 0xe8, 0x9b, 0xd9,
- 0x67, 0xbd, 0xb0, 0x81, 0x18, 0xc6, 0x7c, 0xe7, 0x12, 0x06, 0x59, 0x1e,
- 0xa9, 0xfc, 0xb2, 0xa5, 0x05, 0xc3, 0xe3, 0x2f, 0x45, 0x92, 0xb1, 0x75,
- 0xb3, 0xed, 0x95, 0xaf, 0x41, 0xed, 0x04, 0x15, 0x90, 0xcb, 0xa9, 0x65,
- 0xb0, 0x97, 0xbe, 0x6f, 0x6b, 0x00, 0xfc, 0x53, 0xb8, 0xea, 0xd3, 0xb9,
- 0x40, 0x23, 0x2b, 0x15, 0x9b, 0xa2, 0x49, 0xd9, 0x71, 0x05, 0x48, 0x06,
- 0x1b, 0x96, 0xe4, 0x60, 0x34, 0x8c, 0x34, 0x9f, 0xbc, 0x88, 0x3f, 0xc9,
- 0x76, 0xbf, 0x71, 0x11, 0x6a, 0xfc, 0x60, 0xbf, 0x0d, 0x26, 0x93, 0xc1,
- 0x78, 0xf6, 0xcc, 0x4a, 0xf1, 0xb1, 0x6f, 0xaf, 0x86, 0xd7, 0x83, 0xa7,
- 0xe9, 0xd0, 0xce, 0xee, 0x86, 0xf6, 0x71, 0xf2, 0xf0, 0x79, 0x32, 0xf8,
- 0x62, 0x47, 0xd3, 0x30, 0x27, 0x7b, 0x63, 0x6f, 0x27, 0xc3, 0xa1, 0x7d,
- 0xb8, 0xb5, 0xd7, 0x77, 0x83, 0xc9, 0xe7, 0x61, 0x0f, 0xef, 0x4d, 0x86,
- 0x78, 0x23, 0x5e, 0x0b, 0x53, 0xb3, 0xd1, 0x02, 0xf4, 0xd6, 0x03, 0xff,
- 0x79, 0xf8, 0xf7, 0xd9, 0x70, 0x3c, 0xb3, 0x8f, 0xc3, 0xc9, 0x97, 0xd1,
- 0x6c, 0x46, 0xab, 0x5d, 0x3d, 0xdb, 0xc1, 0xe3, 0x23, 0x2d, 0x3e, 0xb8,
- 0xba, 0x1f, 0xda, 0xfb, 0xc1, 0x37, 0x62, 0xf1, 0xf0, 0xef, 0xd7, 0xc3,
- 0xc7, 0x99, 0xfd, 0x76, 0x37, 0x1c, 0x9b, 0x07, 0x2c, 0xff, 0x6d, 0x44,
- 0xf4, 0x4c, 0x67, 0x03, 0x7c, 0x30, 0x1a, 0xdb, 0x6f, 0x93, 0xd1, 0x6c,
- 0x34, 0xfe, 0xcc, 0x0b, 0x62, 0x34, 0x77, 0x32, 0xfa, 0x7c, 0x37, 0xb3,
- 0x77, 0x0f, 0xf7, 0x37, 0xc3, 0x09, 0xcf, 0xef, 0x7e, 0xa0, 0xdd, 0xf9,
- 0x43, 0xfb, 0x38, 0x98, 0xcc, 0x46, 0xc3, 0xa9, 0x21, 0x3a, 0xbe, 0x8e,
- 0x6e, 0xba, 0x87, 0x3a, 0x1b, 0x4c, 0x89, 0xec, 0x33, 0xfb, 0x6d, 0x34,
- 0xbb, 0x7b, 0x78, 0x9a, 0x35, 0xc4, 0xe3, 0x70, 0x83, 0xf1, 0xb3, 0xfd,
- 0xeb, 0x68, 0x7c, 0xd3, 0xb3, 0xc3, 0x11, 0x2f, 0x34, 0xfc, 0xfb, 0xe3,
- 0x64, 0x38, 0xa5, 0xf3, 0x1b, 0x5a, 0x7b, 0xf4, 0x85, 0x28, 0x1e, 0xd2,
- 0xc3, 0xd1, 0xf8, 0xfa, 0xfe, 0xe9, 0x86, 0x47, 0x83, 0xaf, 0x68, 0x85,
- 0xf1, 0xc3, 0x8c, 0xf8, 0x44, 0x27, 0x23, 0x3a, 0x67, 0x0f, 0xcc, 0x9a,
- 0xf0, 0x6e, 0x58, 0x9d, 0x88, 0xa1, 0xf5, 0xcd, 0x97, 0xe1, 0x84, 0xf8,
- 0x37, 0x9e, 0x0d, 0xae, 0x46, 0xf7, 0x23, 0xda, 0x12, 0xb3, 0xc4, 0xb7,
- 0xa3, 0xd9, 0x98, 0xb6, 0xe0, 0x89, 0xe3, 0x81, 0x50, 0x7e, 0xfd, 0x74,
- 0x3f, 0xa0, 0x43, 0x3c, 0x4d, 0x1e, 0x1f, 0xa6, 0x43, 0xd4, 0x74, 0xc0,
- 0x42, 0x5a, 0x84, 0x18, 0x3e, 0x19, 0x4d, 0xff, 0x6a, 0x07, 0x53, 0xa3,
- 0x8c, 0xfd, 0xdb, 0xd3, 0xa0, 0x59, 0x88, 0xb8, 0x4b, 0x6b, 0x7c, 0x19,
- 0x8c, 0xaf, 0x59, 0x50, 0x7b, 0x82, 0xc4, 0x71, 0xed, 0xf3, 0xc3, 0x13,
- 0x42, 0x09, 0x9d, 0xfb, 0xfe, 0x06, 0x2f, 0x98, 0xf0, 0x02, 0x18, 0x35,
- 0xb4, 0x37, 0xc3, 0xdb, 0xe1, 0xf5, 0x6c, 0xf4, 0x95, 0xc4, 0x4b, 0x6f,
- 0xd2, 0x36, 0xd3, 0xa7, 0x2f, 0x43, 0xe5, 0xf7, 0x74, 0xc6, 0x0c, 0xba,
- 0xbf, 0xb7, 0xe3, 0xe1, 0x35, 0xd1, 0x3b, 0x98, 0x3c, 0xdb, 0xe9, 0x70,
- 0xf2, 0x75, 0x74, 0x0d, 0x3e, 0x98, 0xc9, 0xf0, 0x71, 0x30, 0x22, 0xf6,
- 0x63, 0x6a, 0x7a, 0x32, 0xc1, 0x2a, 0x0f, 0x63, 0x71, 0x38, 0x9f, 0xfa,
- 0x10, 0x1e, 0x69, 0xc9, 0xf0, 0x2b, 0x74, 0xe0, 0x69, 0x7c, 0x8f, 0xd3,
- 0x4e, 0x86, 0x7f, 0x7b, 0xa2, 0xf3, 0x1c, 0xd1, 0x04, 0xac, 0x31, 0xf8,
- 0x4c, 0xda, 0x06, 0x66, 0x46, 0x72, 0x37, 0xdf, 0x46, 0xb4, 0x39, 0x24,
- 0xb4, 0x2f, 0xfc, 0x1e, 0x7f, 0x42, 0x0f, 0x5a, 0xe1, 0x3f, 0x93, 0x1a,
- 0x3d, 0xd8, 0x2f, 0x83, 0x67, 0x19, 0xd5, 0x7e, 0x56, 0xf5, 0x20, 0x32,
- 0x9b, 0x59, 0xee, 0xae, 0x56, 0x90, 0x52, 0xb4, 0xda, 0x39, 0xb8, 0x7a,
- 0x00, 0x0f, 0xae, 0x88, 0x9e, 0x11, 0x93, 0x45, 0x84, 0x80, 0x21, 0x10,
- 0xd1, 0xcd, 0xe0, 0xcb, 0xe0, 0xf3, 0x70, 0xda, 0x33, 0x8d, 0x12, 0xf0,
- 0xd6, 0x3a, 0x5e, 0xde, 0xb3, 0xd3, 0xc7, 0xe1, 0xf5, 0x08, 0xff, 0x41,
- 0xcf, 0x49, 0xf5, 0x48, 0xd6, 0xf7, 0xc2, 0x15, 0xb2, 0xa2, 0xbf, 0x3d,
- 0x41, 0x8a, 0xf4, 0x83, 0x2e, 0x62, 0x07, 0x24, 0x4e, 0x1c, 0x0d, 0x7a,
- 0xa8, 0x22, 0x83, 0x0d, 0x42, 0xd7, 0xc6, 0x41, 0x47, 0x68, 0xef, 0x7d,
- 0xbb, 0x3c, 0x6f, 0xf7, 0xde, 0xd3, 0x3f, 0xe8, 0xc5, 0xfd, 0xc3, 0x14,
- 0xca, 0x46, 0x9b, 0xcc, 0x06, 0x96, 0x29, 0xa6, 0x7f, 0x5f, 0x0d, 0xf1,
- 0xf6, 0x64, 0x38, 0x26, 0x7e, 0xb1, 0x39, 0x0d, 0xae, 0xaf, 0x9f, 0x26,
- 0x64, 0x5a, 0x78, 0x03, 0x5f, 0x10, 0x35, 0xd3, 0x27, 0x32, 0xb6, 0xd1,
- 0x98, 0x85, 0x62, 0x70, 0x5e, 0xb6, 0xe6, 0xd1, 0xe4, 0x26, 0xd8, 0x13,
- 0xf3, 0xd9, 0xde, 0x0e, 0x46, 0xf7, 0x4f, 0x93, 0x03, 0x1d, 0xa3, 0x9d,
- 0x1f, 0x88, 0x85, 0x58, 0x92, 0x75, 0xad, 0x11, 0x48, 0x50, 0xb2, 0xe9,
- 0x45, 0x8f, 0x75, 0xc0, 0x8e, 0x6e, 0x69, 0xab, 0xeb, 0x3b, 0x95, 0x9e,
- 0xed, 0x58, 0xed, 0xb3, 0xbd, 0x23, 0x51, 0x5c, 0x0d, 0xe9, 0xb5, 0xc1,
- 0xcd, 0xd7, 0x11, 0x3c, 0x8f, 0xec, 0x63, 0xc8, 0x16, 0xa6, 0x23, 0xe5,
- 0xc9, 0x83, 0xae, 0xa0, 0x7c, 0x3c, 0xe5, 0xed, 0xe8, 0xb4, 0xfc, 0xf5,
- 0x91, 0x01, 0xff, 0xee, 0x17, 0x77, 0x32, 0x4c, 0x35, 0xe0, 0xac, 0x55,
- 0x2a, 0xb1, 0x33, 0x06, 0x0a, 0xf4, 0xe3, 0x33, 0x3c, 0xf3, 0x98, 0x50,
- 0x91, 0x86, 0x43, 0x8f, 0x4f, 0x35, 0x84, 0x2e, 0x29, 0x02, 0x67, 0xc5,
- 0x96, 0xa2, 0xb8, 0xc2, 0xa6, 0x76, 0xda, 0x32, 0xba, 0x12, 0xa7, 0xb3,
- 0x7c, 0x1a, 0x55, 0x5f, 0xf8, 0xca, 0x88, 0xaf, 0x0c, 0xe5, 0x2a, 0x52,
- 0x4e, 0xab, 0x7d, 0x13, 0xa8, 0x24, 0x05, 0xd4, 0xcc, 0x1c, 0xa9, 0x05,
- 0x8a, 0x0e, 0x5c, 0xbb, 0x5e, 0x23, 0x15, 0x11, 0x74, 0x24, 0xd3, 0xf0,
- 0x1c, 0xac, 0xd2, 0xca, 0x74, 0x83, 0x86, 0x04, 0xcb, 0xe6, 0x8e, 0x0f,
- 0xe6, 0x97, 0x3a, 0x45, 0xd0, 0xe8, 0xf2, 0x68, 0xd3, 0x53, 0x0e, 0x65,
- 0xc6, 0x70, 0x89, 0x2e, 0x94, 0x6e, 0xab, 0x2a, 0xd1, 0xce, 0x54, 0x8b,
- 0xa1, 0x9a, 0x91, 0xdf, 0x22, 0xee, 0xa9, 0x02, 0xe8, 0x70, 0xca, 0xe4,
- 0x93, 0x15, 0x8e, 0x06, 0x8a, 0x9b, 0xaf, 0x37, 0xe1, 0x65, 0x9e, 0x02,
- 0xe4, 0x56, 0x14, 0x9e, 0x68, 0x2b, 0x06, 0x0d, 0xc4, 0xe6, 0x7a, 0xa9,
- 0x5c, 0x5a, 0x91, 0xc9, 0x42, 0x42, 0x12, 0xaf, 0x6e, 0xa7, 0xad, 0x2d,
- 0x42, 0xf9, 0x5e, 0xf1, 0x5c, 0x3b, 0x92, 0xcc, 0x93, 0x3e, 0x58, 0x8a,
- 0xd7, 0xf0, 0x6b, 0x2e, 0xb8, 0x30, 0x02, 0x0c, 0x43, 0x01, 0x0c, 0xf6,
- 0xcf, 0x1a, 0xdc, 0x70, 0x46, 0xc0, 0x3f, 0xd7, 0xf2, 0x96, 0xdd, 0x16,
- 0x9c, 0x2a, 0xf1, 0xc4, 0x0e, 0xcf, 0xfb, 0xf1, 0x41, 0x6b, 0x69, 0x4e,
- 0xf0, 0x85, 0x48, 0x00, 0x00, 0x62, 0x92, 0x6a, 0xd7, 0xbf, 0x96, 0x4e,
- 0x9a, 0x9b, 0x44, 0xc7, 0xbf, 0xf9, 0x97, 0xee, 0x5d, 0xeb, 0x7f, 0x61,
- 0xec, 0xe0, 0xdf, 0xf4, 0x1e, 0xd6, 0xc8, 0x93, 0x8d, 0xfb, 0xb7, 0x7c,
- 0xc7, 0xf9, 0x67, 0x74, 0x67, 0xa8, 0x23, 0xaf, 0xcb, 0xe6, 0x42, 0x63,
- 0x47, 0x4a, 0x02, 0x73, 0xdb, 0xfb, 0x60, 0x32, 0x27, 0x59, 0x1d, 0x1f,
- 0xea, 0x3c, 0x76, 0xb7, 0xb8, 0x9d, 0xbf, 0xf6, 0x1d, 0x80, 0xd8, 0xcc,
- 0xe4, 0x9d, 0x46, 0x44, 0xed, 0x75, 0x09, 0xb9, 0x5f, 0x1e, 0x36, 0xb9,
- 0x6f, 0x9b, 0x5e, 0xbc, 0xca, 0x79, 0x77, 0x16, 0xfa, 0xe2, 0x10, 0x28,
- 0xf7, 0x8f, 0x33, 0x20, 0xee, 0xb8, 0x6a, 0xbe, 0xb5, 0xc6, 0xf0, 0x8e,
- 0xb4, 0x66, 0xab, 0x06, 0x5d, 0x91, 0x59, 0x10, 0x2b, 0x7b, 0x32, 0x15,
- 0x42, 0x99, 0x4b, 0x08, 0xd8, 0x70, 0x2c, 0x21, 0x68, 0x5f, 0x36, 0xf7,
- 0x2c, 0xb4, 0x23, 0xc8, 0x65, 0xdc, 0x8c, 0x07, 0x03, 0xc3, 0xe0, 0x26,
- 0x21, 0x6a, 0x2c, 0xb1, 0x1f, 0x7b, 0x89, 0xb9, 0xbf, 0x23, 0xf4, 0x4e,
- 0x1d, 0x2b, 0x06, 0xaf, 0xf0, 0x03, 0x36, 0xcb, 0x05, 0x72, 0xbe, 0xb8,
- 0x8b, 0x84, 0xca, 0xeb, 0xd1, 0x51, 0x40, 0x8f, 0xf5, 0xb2, 0x9d, 0x97,
- 0xe8, 0x8c, 0x83, 0xfc, 0x48, 0x7e, 0xe8, 0x81, 0xc9, 0x94, 0xad, 0x74,
- 0x2b, 0x5b, 0x5e, 0x5e, 0x22, 0x71, 0x25, 0x5d, 0xfd, 0x9d, 0x58, 0x57,
- 0x2f, 0xfa, 0xf3, 0x5a, 0xff, 0xf9, 0xcd, 0x7e, 0x5c, 0x41, 0xc1, 0x78,
- 0x12, 0xca, 0x01, 0xf1, 0x34, 0x08, 0x2a, 0x66, 0xe2, 0x44, 0x79, 0x88,
- 0x40, 0x2e, 0x57, 0x02, 0x19, 0x3b, 0x0c, 0xa5, 0x95, 0x45, 0x4e, 0x67,
- 0x92, 0x5b, 0x80, 0x04, 0xf4, 0xc9, 0x77, 0xa5, 0x99, 0x94, 0x38, 0x3b,
- 0x83, 0x19, 0x9d, 0x39, 0xd4, 0x5e, 0xf0, 0x70, 0xe1, 0xfa, 0x48, 0x02,
- 0x56, 0x96, 0xcd, 0xe8, 0x6e, 0x96, 0x7e, 0x17, 0x7f, 0x68, 0x78, 0xce,
- 0x91, 0xde, 0x63, 0xff, 0xe2, 0xe5, 0xee, 0x44, 0x67, 0xa2, 0x95, 0x8c,
- 0xc8, 0xe9, 0xe0, 0xd4, 0xe7, 0x9c, 0xd0, 0xf4, 0xab, 0xc0, 0xf8, 0xa0,
- 0xe2, 0x7f, 0xfa, 0xb9, 0xb7, 0x67, 0xcb, 0x30, 0x65, 0x0b, 0x1b, 0x66,
- 0xb0, 0x2e, 0xb9, 0xca, 0xfe, 0xd7, 0x0b, 0x4a, 0x1b, 0xf4, 0xda, 0xe8,
- 0xe0, 0x6a, 0xfa, 0x70, 0x4f, 0x88, 0xe2, 0xfe, 0x39, 0x46, 0xc3, 0x97,
- 0xac, 0x15, 0xaa, 0x10, 0xb6, 0xda, 0x91, 0x8a, 0xff, 0x83, 0x2f, 0xac,
- 0xbe, 0xbd, 0xeb, 0xb7, 0x86, 0xb1, 0xef, 0x11, 0xda, 0xe8, 0xc1, 0xee,
- 0xdc, 0x65, 0xd8, 0x07, 0x7c, 0xdd, 0x73, 0x10, 0xbc, 0x82, 0xde, 0x98,
- 0x6a, 0x0a, 0x45, 0x21, 0xf7, 0xba, 0x8c, 0xb7, 0x5b, 0xbc, 0x8b, 0x09,
- 0xe9, 0xcb, 0x84, 0xca, 0x7a, 0xb7, 0x45, 0x46, 0xc7, 0xfd, 0xac, 0x76,
- 0xb6, 0x3b, 0xd0, 0xc7, 0x34, 0x34, 0x5f, 0xab, 0x06, 0x87, 0xcb, 0xb6,
- 0x9d, 0x3b, 0x24, 0x9d, 0x84, 0xf1, 0xe4, 0x2d, 0xb3, 0x87, 0x15, 0xb7,
- 0x50, 0xb4, 0xeb, 0xd1, 0xee, 0xc7, 0x2d, 0x62, 0x8f, 0x6a, 0xe6, 0x0e,
- 0x95, 0x0c, 0xf4, 0xd6, 0xb8, 0xf3, 0x4b, 0x09, 0x19, 0x97, 0x12, 0xa2,
- 0x2b, 0x4e, 0x47, 0x49, 0xd3, 0x1b, 0x4b, 0x52, 0x91, 0x67, 0x0f, 0x30,
- 0x77, 0x66, 0x53, 0xd0, 0x92, 0xef, 0x17, 0x44, 0xc1, 0x77, 0xae, 0x60,
- 0x6c, 0x5c, 0x5e, 0x13, 0xc3, 0xdc, 0xc6, 0xbf, 0x7f, 0x8f, 0xd2, 0x1e,
- 0x67, 0xcd, 0xbe, 0x4e, 0xa5, 0x83, 0xdb, 0x5c, 0xf3, 0xd7, 0xbb, 0x22,
- 0x7a, 0x58, 0x9e, 0xc1, 0xc3, 0x0d, 0x64, 0x7e, 0xc5, 0x91, 0x4f, 0x29,
- 0x76, 0xf4, 0xd9, 0x79, 0xb8, 0xec, 0xde, 0x4c, 0x1d, 0xeb, 0xd7, 0x1b,
- 0x57, 0x5e, 0x58, 0xb9, 0xbe, 0x5d, 0x1a, 0x8f, 0x5c, 0x3d, 0x93, 0x9e,
- 0x46, 0x2e, 0x73, 0xeb, 0x68, 0x2a, 0xe3, 0xba, 0x5c, 0x5b, 0x85, 0x6b,
- 0x2f, 0xda, 0x9c, 0xb5, 0xf7, 0x51, 0x02, 0x82, 0x48, 0x57, 0x26, 0xc7,
- 0xed, 0x78, 0x2f, 0x97, 0x34, 0xef, 0x74, 0x1e, 0x3d, 0xc1, 0xb8, 0xc4,
- 0x36, 0xa3, 0xb0, 0xc1, 0xc3, 0x52, 0xfc, 0x0d, 0xd4, 0x54, 0x6e, 0x55,
- 0x3c, 0x17, 0xbb, 0x62, 0xb9, 0xcb, 0x5d, 0xf8, 0x2b, 0x3d, 0x10, 0xd5,
- 0xe6, 0xbb, 0x66, 0x23, 0x19, 0x03, 0x6a, 0x09, 0x60, 0x0b, 0x01, 0xc6,
- 0x50, 0x27, 0xac, 0x9b, 0xd3, 0x42, 0xff, 0x88, 0xf4, 0xfc, 0x1d, 0x1a,
- 0x61, 0x3c, 0x1a, 0x48, 0xd6, 0xe8, 0xe5, 0x16, 0xaf, 0xb7, 0x3a, 0x90,
- 0x82, 0x79, 0x17, 0x7f, 0xd1, 0x54, 0xcf, 0x68, 0xb3, 0xbf, 0x80, 0x1a,
- 0x7b, 0x97, 0x2c, 0xbe, 0xbb, 0x92, 0x9d, 0xe0, 0xbf, 0x64, 0x62, 0x04,
- 0xf7, 0xbd, 0x49, 0x4b, 0x66, 0x3b, 0xb2, 0x34, 0x8a, 0x9f, 0x3d, 0xfb,
- 0x91, 0xd0, 0x56, 0x99, 0x66, 0xfc, 0x57, 0x94, 0x00, 0x76, 0xc8, 0x83,
- 0x1e, 0xfe, 0x8e, 0x0e, 0x9f, 0x86, 0x9b, 0x5c, 0x5f, 0x49, 0x83, 0xb4,
- 0x82, 0x7b, 0xc2, 0x3f, 0x36, 0x05, 0x15, 0xed, 0x10, 0xb5, 0xc5, 0x0c,
- 0xe8, 0x4f, 0x2c, 0x5f, 0x2e, 0x63, 0x98, 0xe8, 0xf2, 0x6b, 0xf3, 0xf7,
- 0x0c, 0x34, 0xed, 0xb4, 0x32, 0x76, 0x45, 0x09, 0x9a, 0xb1, 0x65, 0x81,
- 0x5e, 0x34, 0x9c, 0xcd, 0xbc, 0xa4, 0x4f, 0x9a, 0x6a, 0x8c, 0x09, 0x63,
- 0xe0, 0x7c, 0x0f, 0x13, 0x8e, 0x5f, 0xa2, 0x15, 0xb7, 0x19, 0x85, 0x12,
- 0xf2, 0xad, 0x3c, 0xc4, 0x15, 0xef, 0x18, 0x55, 0xd0, 0x7d, 0x33, 0x7e,
- 0x62, 0x74, 0xf1, 0x50, 0x2d, 0x12, 0xa7, 0xf0, 0x16, 0xa6, 0x41, 0xc3,
- 0x4d, 0xee, 0x25, 0x41, 0xb2, 0x70, 0x4f, 0xe6, 0xf0, 0xef, 0xb7, 0x30,
- 0xc7, 0xff, 0x7e, 0x8b, 0x83, 0x22, 0xe6, 0xff, 0x06, 0x00, 0x00, 0xff,
- 0xff, 0x82, 0x4d, 0xf9, 0x2b, 0x69, 0x46, 0x00, 0x00,
- },
- "conf/license/GPL v2",
- )
-}
-
-func conf_license_mit_license() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x5c, 0x52,
- 0xcf, 0x8e, 0xda, 0x3c, 0x10, 0xbf, 0xfb, 0x29, 0x46, 0x9c, 0x76, 0xa5,
- 0x68, 0xbf, 0xaf, 0x55, 0x4f, 0xbd, 0x99, 0xc4, 0x2c, 0x56, 0x43, 0x1c,
- 0x39, 0x66, 0x29, 0xc7, 0x90, 0x18, 0xe2, 0x2a, 0xc4, 0x28, 0x76, 0x8a,
- 0xf6, 0xed, 0x3b, 0x13, 0xd8, 0xdd, 0x6e, 0x25, 0x24, 0x34, 0xe3, 0xf9,
- 0xfd, 0x9b, 0x89, 0xe9, 0x2c, 0x6c, 0xa4, 0x81, 0xdc, 0x35, 0x76, 0x08,
- 0x16, 0x1e, 0xb0, 0x78, 0x64, 0x2c, 0xf5, 0x97, 0xd7, 0xd1, 0x9d, 0xba,
- 0x08, 0x0f, 0xcd, 0x23, 0x7c, 0xfd, 0xff, 0xcb, 0x37, 0xc6, 0x4a, 0x3b,
- 0x9e, 0x5d, 0x08, 0xce, 0x0f, 0xe0, 0x02, 0x74, 0x76, 0xb4, 0x87, 0x57,
- 0x38, 0x8d, 0xf5, 0x10, 0x6d, 0x9b, 0xc0, 0x71, 0xb4, 0x16, 0xfc, 0x11,
- 0x9a, 0xae, 0x1e, 0x4f, 0x36, 0x81, 0xe8, 0xa1, 0x1e, 0x5e, 0xe1, 0x62,
- 0xc7, 0x80, 0x00, 0x7f, 0x88, 0xb5, 0x1b, 0xdc, 0x70, 0x82, 0x1a, 0x1a,
- 0xe4, 0x66, 0x38, 0x19, 0x3b, 0xa4, 0x09, 0xfe, 0x18, 0xaf, 0xf5, 0x68,
- 0x71, 0xb8, 0x85, 0x3a, 0x04, 0xdf, 0xb8, 0x1a, 0xf9, 0xa0, 0xf5, 0xcd,
- 0x74, 0xb6, 0x43, 0xac, 0x23, 0xe9, 0x1d, 0x5d, 0x6f, 0x03, 0x3c, 0x44,
- 0x34, 0xbb, 0xa8, 0xee, 0x88, 0xc5, 0xe3, 0x2c, 0xd2, 0xda, 0xba, 0x67,
- 0x6e, 0x00, 0x7a, 0x7b, 0x7b, 0x82, 0xab, 0x8b, 0x9d, 0x9f, 0x22, 0x8c,
- 0x36, 0xc4, 0xd1, 0x35, 0xc4, 0x91, 0x80, 0x1b, 0x9a, 0x7e, 0x6a, 0xc9,
- 0xc3, 0xdb, 0x73, 0xef, 0xce, 0xee, 0xae, 0x40, 0xf0, 0x39, 0x70, 0x60,
- 0x48, 0x3a, 0x05, 0x4c, 0x40, 0x3e, 0x13, 0x38, 0xfb, 0xd6, 0x1d, 0xe9,
- 0xdf, 0xce, 0xb1, 0x2e, 0xd3, 0xa1, 0x77, 0xa1, 0x4b, 0xa0, 0x75, 0x44,
- 0x7d, 0x98, 0x22, 0x36, 0x03, 0x35, 0xe7, 0xfd, 0x25, 0x94, 0xe3, 0x3f,
- 0x3f, 0x42, 0xb0, 0x7d, 0xcf, 0x90, 0xc1, 0xa1, 0xef, 0x39, 0xeb, 0x87,
- 0xbb, 0x79, 0x86, 0xac, 0x5f, 0x68, 0xa1, 0xf1, 0xbe, 0xa2, 0x40, 0x9d,
- 0x6b, 0xe7, 0xcf, 0x9f, 0x93, 0xb8, 0xc0, 0x8e, 0xd3, 0x38, 0xa0, 0xa4,
- 0x9d, 0x31, 0xad, 0xc7, 0x95, 0xcd, 0x8a, 0xbf, 0x6c, 0x13, 0xa9, 0x43,
- 0xe3, 0x47, 0xdf, 0xf7, 0xfe, 0x4a, 0xd1, 0x1a, 0x3f, 0xb4, 0x8e, 0x12,
- 0x85, 0xef, 0x8c, 0xd1, 0x71, 0xeb, 0x83, 0xff, 0x6d, 0xe7, 0x2c, 0xb7,
- 0x7b, 0x0e, 0x3e, 0xa2, 0xd5, 0x9b, 0x05, 0x3a, 0xc0, 0xe5, 0xe3, 0xaa,
- 0xf7, 0xa7, 0xd0, 0xd5, 0x7d, 0x0f, 0x07, 0x7b, 0x5f, 0x18, 0xea, 0xe2,
- 0x7a, 0xeb, 0xbf, 0xe2, 0x8c, 0x24, 0x1f, 0x22, 0x1e, 0xde, 0xd5, 0x3d,
- 0x5c, 0xfc, 0x38, 0xeb, 0xfd, 0x1b, 0xf3, 0x09, 0xf5, 0xd7, 0x02, 0x2a,
- 0xb5, 0x32, 0x3b, 0xae, 0x05, 0xc8, 0x0a, 0x4a, 0xad, 0x5e, 0x64, 0x26,
- 0x32, 0x58, 0xf0, 0x0a, 0xeb, 0x45, 0x02, 0x3b, 0x69, 0xd6, 0x6a, 0x6b,
- 0x00, 0x27, 0x34, 0x2f, 0xcc, 0x1e, 0xd4, 0x0a, 0x78, 0xb1, 0x87, 0x1f,
- 0xb2, 0xc8, 0x12, 0x10, 0x3f, 0x4b, 0x2d, 0xaa, 0x0a, 0x94, 0x66, 0x72,
- 0x53, 0xe6, 0x52, 0x60, 0x4f, 0x16, 0x69, 0xbe, 0xcd, 0x64, 0xf1, 0x0c,
- 0x4b, 0xc4, 0x15, 0x0a, 0x3f, 0x5d, 0x89, 0xdf, 0x2c, 0x92, 0x1a, 0x05,
- 0x24, 0x78, 0xa7, 0x92, 0xa2, 0x22, 0xb2, 0x8d, 0xd0, 0xe9, 0x1a, 0x4b,
- 0xbe, 0x94, 0xb9, 0x34, 0xfb, 0x84, 0xad, 0xa4, 0x29, 0x88, 0x73, 0xa5,
- 0x34, 0x70, 0x28, 0xb9, 0x36, 0x32, 0xdd, 0xe6, 0x5c, 0x43, 0xb9, 0xd5,
- 0xa5, 0xaa, 0x04, 0xca, 0x67, 0x48, 0x5b, 0xc8, 0x62, 0xa5, 0x51, 0x45,
- 0x6c, 0x44, 0x61, 0x9e, 0x50, 0x15, 0x7b, 0x20, 0x5e, 0xb0, 0x80, 0x6a,
- 0xcd, 0xf3, 0x9c, 0xa4, 0x18, 0xdf, 0xa2, 0x7b, 0x4d, 0xfe, 0x20, 0x55,
- 0xe5, 0x5e, 0xcb, 0xe7, 0xb5, 0x81, 0xb5, 0xca, 0x33, 0x81, 0xcd, 0xa5,
- 0x40, 0x67, 0x7c, 0x99, 0x8b, 0x9b, 0x14, 0x86, 0x4a, 0x73, 0x2e, 0x37,
- 0x09, 0x64, 0x7c, 0xc3, 0x9f, 0xc5, 0x8c, 0x52, 0xc8, 0xa2, 0x19, 0x8d,
- 0xdd, 0xdc, 0xc1, 0x6e, 0x2d, 0xa8, 0x45, 0x7a, 0x1c, 0x7f, 0xa9, 0x91,
- 0xaa, 0xa0, 0x18, 0xa9, 0x2a, 0x8c, 0xc6, 0x32, 0xc1, 0x94, 0xda, 0xbc,
- 0x43, 0x77, 0xb2, 0x12, 0x09, 0x70, 0x2d, 0x2b, 0x5a, 0xc8, 0x4a, 0xab,
- 0x4d, 0xc2, 0x68, 0x9d, 0x88, 0x50, 0x33, 0x09, 0xe2, 0x0a, 0x71, 0x63,
- 0xa1, 0x55, 0xc3, 0xa7, 0x8b, 0xe0, 0x08, 0xd5, 0xdb, 0x4a, 0xbc, 0x13,
- 0x42, 0x26, 0x78, 0x8e, 0x5c, 0x15, 0x81, 0x29, 0xe2, 0xdb, 0xf0, 0xd3,
- 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x49, 0x86, 0xab, 0x31, 0x29, 0x04,
- 0x00, 0x00,
- },
- "conf/license/MIT License",
- )
-}
-
-func conf_mysql_sql() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x72, 0x09,
- 0xf2, 0x0f, 0x50, 0x70, 0x71, 0x0c, 0x71, 0x74, 0x72, 0x0c, 0x76, 0x55,
- 0xf0, 0x74, 0x53, 0x70, 0x8d, 0xf0, 0x0c, 0x0e, 0x09, 0x56, 0x48, 0xcf,
- 0x4f, 0x2f, 0xb6, 0xe6, 0x72, 0x0e, 0x72, 0x75, 0x0c, 0x71, 0x45, 0x91,
- 0xf7, 0xf3, 0x0f, 0x41, 0x56, 0xa3, 0xe0, 0xec, 0xe1, 0x18, 0xe4, 0xe8,
- 0x1c, 0xe2, 0x1a, 0xa4, 0x10, 0xec, 0x1a, 0xa2, 0x50, 0x5a, 0x92, 0x66,
- 0xa1, 0xe0, 0xec, 0xef, 0xe3, 0x03, 0xd2, 0x06, 0xe2, 0xc4, 0xa7, 0xa7,
- 0xe6, 0xa5, 0x16, 0x25, 0xe6, 0xc4, 0x27, 0x67, 0x5a, 0x73, 0x01, 0x02,
- 0x00, 0x00, 0xff, 0xff, 0xcd, 0xf5, 0x53, 0x80, 0x6d, 0x00, 0x00, 0x00,
- },
- "conf/mysql.sql",
- )
-}
-
-func conf_supervisor_ini() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0x6c, 0xcd,
- 0xb1, 0x0a, 0xc2, 0x30, 0x10, 0xc6, 0xf1, 0xfd, 0x9e, 0x22, 0x74, 0xb7,
- 0xd9, 0x85, 0x8c, 0x82, 0x8b, 0xf8, 0x00, 0x22, 0x12, 0xda, 0x33, 0x0d,
- 0x34, 0x39, 0xf9, 0x72, 0x29, 0xf8, 0xf6, 0xa6, 0x19, 0x5c, 0x74, 0xfd,
- 0xfe, 0xbf, 0xe3, 0x6e, 0x2f, 0x48, 0x80, 0x4f, 0xc7, 0x20, 0xa1, 0xdc,
- 0xa9, 0x16, 0x86, 0x0b, 0x51, 0x69, 0x92, 0x94, 0x7c, 0x9e, 0x8d, 0x33,
- 0x76, 0x91, 0xc4, 0xb6, 0x6d, 0x76, 0x27, 0xb6, 0xa8, 0x87, 0x8e, 0x65,
- 0xa1, 0x39, 0x82, 0x27, 0x15, 0xbc, 0x7f, 0x0c, 0xf9, 0xaa, 0xd2, 0x5d,
- 0x4b, 0x8a, 0xca, 0x54, 0x74, 0x96, 0xaa, 0x8f, 0x55, 0xc2, 0x33, 0xae,
- 0xbc, 0x1f, 0x6c, 0x1e, 0xdd, 0x8e, 0x6d, 0xdb, 0x33, 0x03, 0xff, 0xf2,
- 0xa1, 0xed, 0x82, 0x8e, 0x38, 0x6f, 0x11, 0x92, 0x13, 0x67, 0x75, 0xe7,
- 0xeb, 0xe5, 0xe4, 0x86, 0xef, 0xd7, 0xc1, 0x18, 0xfa, 0x04, 0x00, 0x00,
- 0xff, 0xff, 0x61, 0x60, 0x15, 0x6f, 0xc9, 0x00, 0x00, 0x00,
- },
- "conf/supervisor.ini",
- )
-}
-
-// Asset loads and returns the asset for the given name.
-// It returns an error if the asset could not be found or
-// could not be loaded.
-func Asset(name string) ([]byte, error) {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[cannonicalName]; ok {
- return f()
- }
- return nil, fmt.Errorf("Asset %s not found", name)
-}
-
-// AssetNames returns the names of the assets.
-func AssetNames() []string {
- names := make([]string, 0, len(_bindata))
- for name := range _bindata {
- names = append(names, name)
- }
- return names
-}
-
-// _bindata is a table, holding each asset generator, mapped to its name.
-var _bindata = map[string]func() ([]byte, error){
- "conf/app.ini": conf_app_ini,
- "conf/content/git-bare.zip": conf_content_git_bare_zip,
- "conf/etc/supervisord.conf": conf_etc_supervisord_conf,
- "conf/gitignore/Android": conf_gitignore_android,
- "conf/gitignore/C": conf_gitignore_c,
- "conf/gitignore/C Sharp": conf_gitignore_c_sharp,
- "conf/gitignore/C++": conf_gitignore_c_,
- "conf/gitignore/Google Go": conf_gitignore_google_go,
- "conf/gitignore/Java": conf_gitignore_java,
- "conf/gitignore/Objective-C": conf_gitignore_objective_c,
- "conf/gitignore/Python": conf_gitignore_python,
- "conf/gitignore/Ruby": conf_gitignore_ruby,
- "conf/license/Affero GPL": conf_license_affero_gpl,
- "conf/license/Apache v2 License": conf_license_apache_v2_license,
- "conf/license/Artistic License 2.0": conf_license_artistic_license_2_0,
- "conf/license/BSD (3-Clause) License": conf_license_bsd_3_clause_license,
- "conf/license/GPL v2": conf_license_gpl_v2,
- "conf/license/MIT License": conf_license_mit_license,
- "conf/mysql.sql": conf_mysql_sql,
- "conf/supervisor.ini": conf_supervisor_ini,
-}
diff --git a/modules/captcha/captcha.go b/modules/captcha/captcha.go
new file mode 100644
index 0000000000..e43e09dc59
--- /dev/null
+++ b/modules/captcha/captcha.go
@@ -0,0 +1,201 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+// Package captcha a middleware that provides captcha service for Macaron.
+package captcha
+
+import (
+ "fmt"
+ "html/template"
+ "net/http"
+ "path"
+ "strings"
+
+ "github.com/Unknwon/macaron"
+
+ "github.com/gogits/cache"
+
+ "github.com/gogits/gogs/modules/base"
+ "github.com/gogits/gogs/modules/log"
+)
+
+var (
+ defaultChars = []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
+)
+
+const (
+ // default captcha attributes
+ challengeNums = 6
+ expiration = 600
+ fieldIdName = "captcha_id"
+ fieldCaptchaName = "captcha"
+ cachePrefix = "captcha_"
+ defaultURLPrefix = "/captcha/"
+)
+
+// Captcha struct
+type Captcha struct {
+ store cache.Cache
+
+ // url prefix for captcha image
+ URLPrefix string
+
+ // specify captcha id input field name
+ FieldIdName string
+ // specify captcha result input field name
+ FieldCaptchaName string
+
+ // captcha image width and height
+ StdWidth int
+ StdHeight int
+
+ // captcha chars nums
+ ChallengeNums int
+
+ // captcha expiration seconds
+ Expiration int64
+
+ // cache key prefix
+ CachePrefix string
+}
+
+// generate key string
+func (c *Captcha) key(id string) string {
+ return c.CachePrefix + id
+}
+
+// generate rand chars with default chars
+func (c *Captcha) genRandChars() []byte {
+ return base.RandomCreateBytes(c.ChallengeNums, defaultChars...)
+}
+
+// beego filter handler for serve captcha image
+func (c *Captcha) Handler(ctx *macaron.Context) {
+ var chars []byte
+
+ id := path.Base(ctx.Req.RequestURI)
+ if i := strings.Index(id, "."); i != -1 {
+ id = id[:i]
+ }
+
+ key := c.key(id)
+
+ if v, ok := c.store.Get(key).([]byte); ok {
+ chars = v
+ } else {
+ ctx.Status(404)
+ ctx.Write([]byte("captcha not found"))
+ return
+ }
+
+ // reload captcha
+ if len(ctx.Query("reload")) > 0 {
+ chars = c.genRandChars()
+ if err := c.store.Put(key, chars, c.Expiration); err != nil {
+ ctx.Status(500)
+ ctx.Write([]byte("captcha reload error"))
+ log.Error(4, "Reload Create Captcha Error: %v", err)
+ return
+ }
+ }
+
+ img := NewImage(chars, c.StdWidth, c.StdHeight)
+ if _, err := img.WriteTo(ctx.RW()); err != nil {
+ log.Error(4, "Write Captcha Image Error: %v", err)
+ }
+}
+
+// tempalte func for output html
+func (c *Captcha) CreateCaptchaHtml() template.HTML {
+ value, err := c.CreateCaptcha()
+ if err != nil {
+ log.Error(4, "Create Captcha Error: %v", err)
+ return ""
+ }
+
+ // create html
+ return template.HTML(fmt.Sprintf(`<input type="hidden" name="%s" value="%s">`+
+ `<a class="captcha" href="javascript:">`+
+ `<img onclick="this.src=('%s%s.png?reload='+(new Date()).getTime())" class="captcha-img" src="%s%s.png">`+
+ `</a>`, c.FieldIdName, value, c.URLPrefix, value, c.URLPrefix, value))
+}
+
+// create a new captcha id
+func (c *Captcha) CreateCaptcha() (string, error) {
+ // generate captcha id
+ id := string(base.RandomCreateBytes(15))
+
+ // get the captcha chars
+ chars := c.genRandChars()
+
+ // save to store
+ if err := c.store.Put(c.key(id), chars, c.Expiration); err != nil {
+ return "", err
+ }
+
+ return id, nil
+}
+
+// verify from a request
+func (c *Captcha) VerifyReq(req *http.Request) bool {
+ req.ParseForm()
+ return c.Verify(req.Form.Get(c.FieldIdName), req.Form.Get(c.FieldCaptchaName))
+}
+
+// direct verify id and challenge string
+func (c *Captcha) Verify(id string, challenge string) (success bool) {
+ if len(challenge) == 0 || len(id) == 0 {
+ return
+ }
+
+ var chars []byte
+
+ key := c.key(id)
+
+ if v, ok := c.store.Get(key).([]byte); ok && len(v) == len(challenge) {
+ chars = v
+ } else {
+ return
+ }
+
+ defer func() {
+ // finally remove it
+ c.store.Delete(key)
+ }()
+
+ // verify challenge
+ for i, c := range chars {
+ if c != challenge[i]-48 {
+ return
+ }
+ }
+
+ return true
+}
+
+// create a new captcha.Captcha
+func NewCaptcha(urlPrefix string, store cache.Cache) *Captcha {
+ cpt := &Captcha{}
+ cpt.store = store
+ cpt.FieldIdName = fieldIdName
+ cpt.FieldCaptchaName = fieldCaptchaName
+ cpt.ChallengeNums = challengeNums
+ cpt.Expiration = expiration
+ cpt.CachePrefix = cachePrefix
+ cpt.StdWidth = stdWidth
+ cpt.StdHeight = stdHeight
+
+ if len(urlPrefix) == 0 {
+ urlPrefix = defaultURLPrefix
+ }
+
+ if urlPrefix[len(urlPrefix)-1] != '/' {
+ urlPrefix += "/"
+ }
+
+ cpt.URLPrefix = urlPrefix
+
+ base.TemplateFuncs["CreateCaptcha"] = cpt.CreateCaptchaHtml
+ return cpt
+}
diff --git a/modules/captcha/image.go b/modules/captcha/image.go
new file mode 100644
index 0000000000..c9972ba2c3
--- /dev/null
+++ b/modules/captcha/image.go
@@ -0,0 +1,487 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package captcha
+
+import (
+ "bytes"
+ "image"
+ "image/color"
+ "image/png"
+ "io"
+ "math"
+)
+
+const (
+ fontWidth = 11
+ fontHeight = 18
+ blackChar = 1
+
+ // Standard width and height of a captcha image.
+ stdWidth = 240
+ stdHeight = 80
+ // Maximum absolute skew factor of a single digit.
+ maxSkew = 0.7
+ // Number of background circles.
+ circleCount = 20
+)
+
+var font = [][]byte{
+ { // 0
+ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
+ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+ },
+ { // 1
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
+ 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ },
+ { // 2
+ 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ },
+ { // 3
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ },
+ { // 4
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0,
+ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
+ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,
+ 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ },
+ { // 5
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ },
+ { // 6
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
+ 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0,
+ 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0,
+ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
+ 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+ },
+ { // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
+ },
+ { // 8
+ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
+ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+ },
+ { // 9
+ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
+ 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
+ 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+ },
+}
+
+type Image struct {
+ *image.Paletted
+ numWidth int
+ numHeight int
+ dotSize int
+}
+
+var prng = &siprng{}
+
+// randIntn returns a pseudorandom non-negative int in range [0, n).
+func randIntn(n int) int {
+ return prng.Intn(n)
+}
+
+// randInt returns a pseudorandom int in range [from, to].
+func randInt(from, to int) int {
+ return prng.Intn(to+1-from) + from
+}
+
+// randFloat returns a pseudorandom float64 in range [from, to].
+func randFloat(from, to float64) float64 {
+ return (to-from)*prng.Float64() + from
+}
+
+func randomPalette() color.Palette {
+ p := make([]color.Color, circleCount+1)
+ // Transparent color.
+ p[0] = color.RGBA{0xFF, 0xFF, 0xFF, 0x00}
+ // Primary color.
+ prim := color.RGBA{
+ uint8(randIntn(129)),
+ uint8(randIntn(129)),
+ uint8(randIntn(129)),
+ 0xFF,
+ }
+ p[1] = prim
+ // Circle colors.
+ for i := 2; i <= circleCount; i++ {
+ p[i] = randomBrightness(prim, 255)
+ }
+ return p
+}
+
+// NewImage returns a new captcha image of the given width and height with the
+// given digits, where each digit must be in range 0-9.
+func NewImage(digits []byte, width, height int) *Image {
+ m := new(Image)
+ m.Paletted = image.NewPaletted(image.Rect(0, 0, width, height), randomPalette())
+ m.calculateSizes(width, height, len(digits))
+ // Randomly position captcha inside the image.
+ maxx := width - (m.numWidth+m.dotSize)*len(digits) - m.dotSize
+ maxy := height - m.numHeight - m.dotSize*2
+ var border int
+ if width > height {
+ border = height / 5
+ } else {
+ border = width / 5
+ }
+ x := randInt(border, maxx-border)
+ y := randInt(border, maxy-border)
+ // Draw digits.
+ for _, n := range digits {
+ m.drawDigit(font[n], x, y)
+ x += m.numWidth + m.dotSize
+ }
+ // Draw strike-through line.
+ m.strikeThrough()
+ // Apply wave distortion.
+ m.distort(randFloat(5, 10), randFloat(100, 200))
+ // Fill image with random circles.
+ m.fillWithCircles(circleCount, m.dotSize)
+ return m
+}
+
+// encodedPNG encodes an image to PNG and returns
+// the result as a byte slice.
+func (m *Image) encodedPNG() []byte {
+ var buf bytes.Buffer
+ if err := png.Encode(&buf, m.Paletted); err != nil {
+ panic(err.Error())
+ }
+ return buf.Bytes()
+}
+
+// WriteTo writes captcha image in PNG format into the given writer.
+func (m *Image) WriteTo(w io.Writer) (int64, error) {
+ n, err := w.Write(m.encodedPNG())
+ return int64(n), err
+}
+
+func (m *Image) calculateSizes(width, height, ncount int) {
+ // Goal: fit all digits inside the image.
+ var border int
+ if width > height {
+ border = height / 4
+ } else {
+ border = width / 4
+ }
+ // Convert everything to floats for calculations.
+ w := float64(width - border*2)
+ h := float64(height - border*2)
+ // fw takes into account 1-dot spacing between digits.
+ fw := float64(fontWidth + 1)
+ fh := float64(fontHeight)
+ nc := float64(ncount)
+ // Calculate the width of a single digit taking into account only the
+ // width of the image.
+ nw := w / nc
+ // Calculate the height of a digit from this width.
+ nh := nw * fh / fw
+ // Digit too high?
+ if nh > h {
+ // Fit digits based on height.
+ nh = h
+ nw = fw / fh * nh
+ }
+ // Calculate dot size.
+ m.dotSize = int(nh / fh)
+ // Save everything, making the actual width smaller by 1 dot to account
+ // for spacing between digits.
+ m.numWidth = int(nw) - m.dotSize
+ m.numHeight = int(nh)
+}
+
+func (m *Image) drawHorizLine(fromX, toX, y int, colorIdx uint8) {
+ for x := fromX; x <= toX; x++ {
+ m.SetColorIndex(x, y, colorIdx)
+ }
+}
+
+func (m *Image) drawCircle(x, y, radius int, colorIdx uint8) {
+ f := 1 - radius
+ dfx := 1
+ dfy := -2 * radius
+ xo := 0
+ yo := radius
+
+ m.SetColorIndex(x, y+radius, colorIdx)
+ m.SetColorIndex(x, y-radius, colorIdx)
+ m.drawHorizLine(x-radius, x+radius, y, colorIdx)
+
+ for xo < yo {
+ if f >= 0 {
+ yo--
+ dfy += 2
+ f += dfy
+ }
+ xo++
+ dfx += 2
+ f += dfx
+ m.drawHorizLine(x-xo, x+xo, y+yo, colorIdx)
+ m.drawHorizLine(x-xo, x+xo, y-yo, colorIdx)
+ m.drawHorizLine(x-yo, x+yo, y+xo, colorIdx)
+ m.drawHorizLine(x-yo, x+yo, y-xo, colorIdx)
+ }
+}
+
+func (m *Image) fillWithCircles(n, maxradius int) {
+ maxx := m.Bounds().Max.X
+ maxy := m.Bounds().Max.Y
+ for i := 0; i < n; i++ {
+ colorIdx := uint8(randInt(1, circleCount-1))
+ r := randInt(1, maxradius)
+ m.drawCircle(randInt(r, maxx-r), randInt(r, maxy-r), r, colorIdx)
+ }
+}
+
+func (m *Image) strikeThrough() {
+ maxx := m.Bounds().Max.X
+ maxy := m.Bounds().Max.Y
+ y := randInt(maxy/3, maxy-maxy/3)
+ amplitude := randFloat(5, 20)
+ period := randFloat(80, 180)
+ dx := 2.0 * math.Pi / period
+ for x := 0; x < maxx; x++ {
+ xo := amplitude * math.Cos(float64(y)*dx)
+ yo := amplitude * math.Sin(float64(x)*dx)
+ for yn := 0; yn < m.dotSize; yn++ {
+ r := randInt(0, m.dotSize)
+ m.drawCircle(x+int(xo), y+int(yo)+(yn*m.dotSize), r/2, 1)
+ }
+ }
+}
+
+func (m *Image) drawDigit(digit []byte, x, y int) {
+ skf := randFloat(-maxSkew, maxSkew)
+ xs := float64(x)
+ r := m.dotSize / 2
+ y += randInt(-r, r)
+ for yo := 0; yo < fontHeight; yo++ {
+ for xo := 0; xo < fontWidth; xo++ {
+ if digit[yo*fontWidth+xo] != blackChar {
+ continue
+ }
+ m.drawCircle(x+xo*m.dotSize, y+yo*m.dotSize, r, 1)
+ }
+ xs += skf
+ x = int(xs)
+ }
+}
+
+func (m *Image) distort(amplude float64, period float64) {
+ w := m.Bounds().Max.X
+ h := m.Bounds().Max.Y
+
+ oldm := m.Paletted
+ newm := image.NewPaletted(image.Rect(0, 0, w, h), oldm.Palette)
+
+ dx := 2.0 * math.Pi / period
+ for x := 0; x < w; x++ {
+ for y := 0; y < h; y++ {
+ xo := amplude * math.Sin(float64(y)*dx)
+ yo := amplude * math.Cos(float64(x)*dx)
+ newm.SetColorIndex(x, y, oldm.ColorIndexAt(x+int(xo), y+int(yo)))
+ }
+ }
+ m.Paletted = newm
+}
+
+func randomBrightness(c color.RGBA, max uint8) color.RGBA {
+ minc := min3(c.R, c.G, c.B)
+ maxc := max3(c.R, c.G, c.B)
+ if maxc > max {
+ return c
+ }
+ n := randIntn(int(max-maxc)) - int(minc)
+ return color.RGBA{
+ uint8(int(c.R) + n),
+ uint8(int(c.G) + n),
+ uint8(int(c.B) + n),
+ uint8(c.A),
+ }
+}
+
+func min3(x, y, z uint8) (m uint8) {
+ m = x
+ if y < m {
+ m = y
+ }
+ if z < m {
+ m = z
+ }
+ return
+}
+
+func max3(x, y, z uint8) (m uint8) {
+ m = x
+ if y > m {
+ m = y
+ }
+ if z > m {
+ m = z
+ }
+ return
+}
diff --git a/modules/captcha/image_test.go b/modules/captcha/image_test.go
new file mode 100644
index 0000000000..30b3ea4ae3
--- /dev/null
+++ b/modules/captcha/image_test.go
@@ -0,0 +1,42 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package captcha
+
+import (
+ "testing"
+
+ "github.com/astaxie/beego/utils"
+)
+
+type byteCounter struct {
+ n int64
+}
+
+func (bc *byteCounter) Write(b []byte) (int, error) {
+ bc.n += int64(len(b))
+ return len(b), nil
+}
+
+func BenchmarkNewImage(b *testing.B) {
+ b.StopTimer()
+ d := utils.RandomCreateBytes(challengeNums, defaultChars...)
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ NewImage(d, stdWidth, stdHeight)
+ }
+}
+
+func BenchmarkImageWriteTo(b *testing.B) {
+ b.StopTimer()
+ d := utils.RandomCreateBytes(challengeNums, defaultChars...)
+ b.StartTimer()
+ counter := &byteCounter{}
+ for i := 0; i < b.N; i++ {
+ img := NewImage(d, stdWidth, stdHeight)
+ img.WriteTo(counter)
+ b.SetBytes(counter.n)
+ counter.n = 0
+ }
+}
diff --git a/modules/captcha/siprng.go b/modules/captcha/siprng.go
new file mode 100644
index 0000000000..c059b9f7bf
--- /dev/null
+++ b/modules/captcha/siprng.go
@@ -0,0 +1,267 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package captcha
+
+import (
+ "crypto/rand"
+ "encoding/binary"
+ "io"
+ "sync"
+)
+
+// siprng is PRNG based on SipHash-2-4.
+type siprng struct {
+ mu sync.Mutex
+ k0, k1, ctr uint64
+}
+
+// siphash implements SipHash-2-4, accepting a uint64 as a message.
+func siphash(k0, k1, m uint64) uint64 {
+ // Initialization.
+ v0 := k0 ^ 0x736f6d6570736575
+ v1 := k1 ^ 0x646f72616e646f6d
+ v2 := k0 ^ 0x6c7967656e657261
+ v3 := k1 ^ 0x7465646279746573
+ t := uint64(8) << 56
+
+ // Compression.
+ v3 ^= m
+
+ // Round 1.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ // Round 2.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ v0 ^= m
+
+ // Compress last block.
+ v3 ^= t
+
+ // Round 1.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ // Round 2.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ v0 ^= t
+
+ // Finalization.
+ v2 ^= 0xff
+
+ // Round 1.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ // Round 2.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ // Round 3.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ // Round 4.
+ v0 += v1
+ v1 = v1<<13 | v1>>(64-13)
+ v1 ^= v0
+ v0 = v0<<32 | v0>>(64-32)
+
+ v2 += v3
+ v3 = v3<<16 | v3>>(64-16)
+ v3 ^= v2
+
+ v0 += v3
+ v3 = v3<<21 | v3>>(64-21)
+ v3 ^= v0
+
+ v2 += v1
+ v1 = v1<<17 | v1>>(64-17)
+ v1 ^= v2
+ v2 = v2<<32 | v2>>(64-32)
+
+ return v0 ^ v1 ^ v2 ^ v3
+}
+
+// rekey sets a new PRNG key, which is read from crypto/rand.
+func (p *siprng) rekey() {
+ var k [16]byte
+ if _, err := io.ReadFull(rand.Reader, k[:]); err != nil {
+ panic(err.Error())
+ }
+ p.k0 = binary.LittleEndian.Uint64(k[0:8])
+ p.k1 = binary.LittleEndian.Uint64(k[8:16])
+ p.ctr = 1
+}
+
+// Uint64 returns a new pseudorandom uint64.
+// It rekeys PRNG on the first call and every 64 MB of generated data.
+func (p *siprng) Uint64() uint64 {
+ p.mu.Lock()
+ if p.ctr == 0 || p.ctr > 8*1024*1024 {
+ p.rekey()
+ }
+ v := siphash(p.k0, p.k1, p.ctr)
+ p.ctr++
+ p.mu.Unlock()
+ return v
+}
+
+func (p *siprng) Int63() int64 {
+ return int64(p.Uint64() & 0x7fffffffffffffff)
+}
+
+func (p *siprng) Uint32() uint32 {
+ return uint32(p.Uint64())
+}
+
+func (p *siprng) Int31() int32 {
+ return int32(p.Uint32() & 0x7fffffff)
+}
+
+func (p *siprng) Intn(n int) int {
+ if n <= 0 {
+ panic("invalid argument to Intn")
+ }
+ if n <= 1<<31-1 {
+ return int(p.Int31n(int32(n)))
+ }
+ return int(p.Int63n(int64(n)))
+}
+
+func (p *siprng) Int63n(n int64) int64 {
+ if n <= 0 {
+ panic("invalid argument to Int63n")
+ }
+ max := int64((1 << 63) - 1 - (1<<63)%uint64(n))
+ v := p.Int63()
+ for v > max {
+ v = p.Int63()
+ }
+ return v % n
+}
+
+func (p *siprng) Int31n(n int32) int32 {
+ if n <= 0 {
+ panic("invalid argument to Int31n")
+ }
+ max := int32((1 << 31) - 1 - (1<<31)%uint32(n))
+ v := p.Int31()
+ for v > max {
+ v = p.Int31()
+ }
+ return v % n
+}
+
+func (p *siprng) Float64() float64 { return float64(p.Int63()) / (1 << 63) }
diff --git a/modules/captcha/siprng_test.go b/modules/captcha/siprng_test.go
new file mode 100644
index 0000000000..3b10fe58bf
--- /dev/null
+++ b/modules/captcha/siprng_test.go
@@ -0,0 +1,23 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package captcha
+
+import "testing"
+
+func TestSiphash(t *testing.T) {
+ good := uint64(0xe849e8bb6ffe2567)
+ cur := siphash(0, 0, 0)
+ if cur != good {
+ t.Fatalf("siphash: expected %x, got %x", good, cur)
+ }
+}
+
+func BenchmarkSiprng(b *testing.B) {
+ b.SetBytes(8)
+ p := &siprng{}
+ for i := 0; i < b.N; i++ {
+ p.Uint64()
+ }
+}
diff --git a/modules/git/blob.go b/modules/git/blob.go
new file mode 100644
index 0000000000..3ce462a3c2
--- /dev/null
+++ b/modules/git/blob.go
@@ -0,0 +1,26 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "bytes"
+ "errors"
+ "io"
+
+ "github.com/Unknwon/com"
+)
+
+type Blob struct {
+ repo *Repository
+ *TreeEntry
+}
+
+func (b *Blob) Data() (io.Reader, error) {
+ stdout, stderr, err := com.ExecCmdDirBytes(b.repo.Path, "git", "show", b.Id.String())
+ if err != nil {
+ return nil, errors.New(string(stderr))
+ }
+ return bytes.NewBuffer(stdout), nil
+}
diff --git a/modules/git/commit.go b/modules/git/commit.go
new file mode 100644
index 0000000000..f61f2927b9
--- /dev/null
+++ b/modules/git/commit.go
@@ -0,0 +1,78 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "container/list"
+ "strings"
+)
+
+// Commit represents a git commit.
+type Commit struct {
+ Tree
+ Id sha1 // The id of this commit object
+ Author *Signature
+ Committer *Signature
+ CommitMessage string
+
+ parents []sha1 // sha1 strings
+}
+
+// Return the commit message. Same as retrieving CommitMessage directly.
+func (c *Commit) Message() string {
+ return c.CommitMessage
+}
+
+func (c *Commit) Summary() string {
+ return strings.Split(c.CommitMessage, "\n")[0]
+}
+
+// Return oid of the parent number n (0-based index). Return nil if no such parent exists.
+func (c *Commit) ParentId(n int) (id sha1, err error) {
+ if n >= len(c.parents) {
+ err = IdNotExist
+ return
+ }
+ return c.parents[n], nil
+}
+
+// Return parent number n (0-based index)
+func (c *Commit) Parent(n int) (*Commit, error) {
+ id, err := c.ParentId(n)
+ if err != nil {
+ return nil, err
+ }
+ parent, err := c.repo.getCommit(id)
+ if err != nil {
+ return nil, err
+ }
+ return parent, nil
+}
+
+// Return the number of parents of the commit. 0 if this is the
+// root commit, otherwise 1,2,...
+func (c *Commit) ParentCount() int {
+ return len(c.parents)
+}
+
+func (c *Commit) CommitsBefore() (*list.List, error) {
+ return c.repo.getCommitsBefore(c.Id)
+}
+
+func (c *Commit) CommitsBeforeUntil(commitId string) (*list.List, error) {
+ ec, err := c.repo.GetCommit(commitId)
+ if err != nil {
+ return nil, err
+ }
+ return c.repo.CommitsBetween(c, ec)
+}
+
+func (c *Commit) CommitsCount() (int, error) {
+ return c.repo.commitsCount(c.Id)
+}
+
+func (c *Commit) GetCommitOfRelPath(relPath string) (*Commit, error) {
+ return c.repo.getCommitOfRelPath(c.Id, relPath)
+}
diff --git a/modules/git/commit_archive.go b/modules/git/commit_archive.go
new file mode 100644
index 0000000000..23b4b058dd
--- /dev/null
+++ b/modules/git/commit_archive.go
@@ -0,0 +1,36 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "fmt"
+
+ "github.com/Unknwon/com"
+)
+
+type ArchiveType int
+
+const (
+ ZIP ArchiveType = iota + 1
+ TARGZ
+)
+
+func (c *Commit) CreateArchive(path string, archiveType ArchiveType) error {
+ var format string
+ switch archiveType {
+ case ZIP:
+ format = "zip"
+ case TARGZ:
+ format = "tar.gz"
+ default:
+ return fmt.Errorf("unknown format: %v", archiveType)
+ }
+
+ _, stderr, err := com.ExecCmdDir(c.repo.Path, "git", "archive", "--format="+format, "-o", path, c.Id.String())
+ if err != nil {
+ return fmt.Errorf("%s", stderr)
+ }
+ return nil
+}
diff --git a/modules/git/repo.go b/modules/git/repo.go
new file mode 100644
index 0000000000..14ac39a3ed
--- /dev/null
+++ b/modules/git/repo.go
@@ -0,0 +1,27 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "path/filepath"
+)
+
+// Repository represents a Git repository.
+type Repository struct {
+ Path string
+
+ commitCache map[sha1]*Commit
+ tagCache map[sha1]*Tag
+}
+
+// OpenRepository opens the repository at the given path.
+func OpenRepository(repoPath string) (*Repository, error) {
+ repoPath, err := filepath.Abs(repoPath)
+ if err != nil {
+ return nil, err
+ }
+
+ return &Repository{Path: repoPath}, nil
+}
diff --git a/modules/git/repo_branch.go b/modules/git/repo_branch.go
new file mode 100644
index 0000000000..726019c1b1
--- /dev/null
+++ b/modules/git/repo_branch.go
@@ -0,0 +1,38 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "errors"
+ "strings"
+
+ "github.com/Unknwon/com"
+)
+
+func IsBranchExist(repoPath, branchName string) bool {
+ _, _, err := com.ExecCmdDir(repoPath, "git", "show-ref", "--verify", "refs/heads/"+branchName)
+ return err == nil
+}
+
+func (repo *Repository) IsBranchExist(branchName string) bool {
+ return IsBranchExist(repo.Path, branchName)
+}
+
+func (repo *Repository) GetBranches() ([]string, error) {
+ stdout, stderr, err := com.ExecCmdDir(repo.Path, "git", "show-ref", "--heads")
+ if err != nil {
+ return nil, errors.New(stderr)
+ }
+ infos := strings.Split(stdout, "\n")
+ branches := make([]string, len(infos)-1)
+ for i, info := range infos[:len(infos)-1] {
+ parts := strings.Split(info, " ")
+ if len(parts) != 2 {
+ continue // NOTE: I should believe git will not give me wrong string.
+ }
+ branches[i] = strings.TrimPrefix(parts[1], "refs/heads/")
+ }
+ return branches, nil
+}
diff --git a/modules/git/repo_commit.go b/modules/git/repo_commit.go
new file mode 100644
index 0000000000..b1ea5a29a5
--- /dev/null
+++ b/modules/git/repo_commit.go
@@ -0,0 +1,234 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "bytes"
+ "container/list"
+ "errors"
+ "strings"
+ "sync"
+
+ "github.com/Unknwon/com"
+)
+
+func (repo *Repository) getCommitIdOfRef(refpath string) (string, error) {
+ stdout, stderr, err := com.ExecCmdDir(repo.Path, "git", "show-ref", "--verify", refpath)
+ if err != nil {
+ return "", errors.New(stderr)
+ }
+ return strings.Split(stdout, " ")[0], nil
+}
+
+func (repo *Repository) GetCommitIdOfBranch(branchName string) (string, error) {
+ return repo.getCommitIdOfRef("refs/heads/" + branchName)
+}
+
+// get branch's last commit or a special commit by id string
+func (repo *Repository) GetCommitOfBranch(branchName string) (*Commit, error) {
+ commitId, err := repo.GetCommitIdOfBranch(branchName)
+ if err != nil {
+ return nil, err
+ }
+
+ return repo.GetCommit(commitId)
+}
+
+// Parse commit information from the (uncompressed) raw
+// data from the commit object.
+// \n\n separate headers from message
+func parseCommitData(data []byte) (*Commit, error) {
+ commit := new(Commit)
+ commit.parents = make([]sha1, 0, 1)
+ // we now have the contents of the commit object. Let's investigate...
+ nextline := 0
+l:
+ for {
+ eol := bytes.IndexByte(data[nextline:], '\n')
+ switch {
+ case eol > 0:
+ line := data[nextline : nextline+eol]
+ spacepos := bytes.IndexByte(line, ' ')
+ reftype := line[:spacepos]
+ switch string(reftype) {
+ case "tree":
+ id, err := NewIdFromString(string(line[spacepos+1:]))
+ if err != nil {
+ return nil, err
+ }
+ commit.Tree.Id = id
+ case "parent":
+ // A commit can have one or more parents
+ oid, err := NewIdFromString(string(line[spacepos+1:]))
+ if err != nil {
+ return nil, err
+ }
+ commit.parents = append(commit.parents, oid)
+ case "author":
+ sig, err := newSignatureFromCommitline(line[spacepos+1:])
+ if err != nil {
+ return nil, err
+ }
+ commit.Author = sig
+ case "committer":
+ sig, err := newSignatureFromCommitline(line[spacepos+1:])
+ if err != nil {
+ return nil, err
+ }
+ commit.Committer = sig
+ }
+ nextline += eol + 1
+ case eol == 0:
+ commit.CommitMessage = string(data[nextline+1:])
+ break l
+ default:
+ break l
+ }
+ }
+ return commit, nil
+}
+
+func (repo *Repository) getCommit(id sha1) (*Commit, error) {
+ if repo.commitCache != nil {
+ if c, ok := repo.commitCache[id]; ok {
+ return c, nil
+ }
+ } else {
+ repo.commitCache = make(map[sha1]*Commit, 10)
+ }
+
+ data, bytErr, err := com.ExecCmdDirBytes(repo.Path, "git", "cat-file", "-p", id.String())
+ if err != nil {
+ return nil, errors.New(string(bytErr))
+ }
+
+ commit, err := parseCommitData(data)
+ if err != nil {
+ return nil, err
+ }
+ commit.repo = repo
+ commit.Id = id
+
+ repo.commitCache[id] = commit
+ return commit, nil
+}
+
+// Find the commit object in the repository.
+func (repo *Repository) GetCommit(commitId string) (*Commit, error) {
+ id, err := NewIdFromString(commitId)
+ if err != nil {
+ return nil, err
+ }
+
+ return repo.getCommit(id)
+}
+
+func (repo *Repository) commitsCount(id sha1) (int, error) {
+ stdout, stderr, err := com.ExecCmdDir(repo.Path, "git", "rev-list", "--count", id.String())
+ if err != nil {
+ return 0, errors.New(stderr)
+ }
+ return com.StrTo(strings.TrimSpace(stdout)).Int()
+}
+
+// used only for single tree, (]
+func (repo *Repository) CommitsBetween(last *Commit, before *Commit) (*list.List, error) {
+ l := list.New()
+ if last == nil || last.ParentCount() == 0 {
+ return l, nil
+ }
+
+ var err error
+ cur := last
+ for {
+ if cur.Id.Equal(before.Id) {
+ break
+ }
+ l.PushBack(cur)
+ if cur.ParentCount() == 0 {
+ break
+ }
+ cur, err = cur.Parent(0)
+ if err != nil {
+ return nil, err
+ }
+ }
+ return l, nil
+}
+
+func (repo *Repository) commitsBefore(lock *sync.Mutex, l *list.List, parent *list.Element, id sha1, limit int) error {
+ commit, err := repo.getCommit(id)
+ if err != nil {
+ return err
+ }
+
+ var e *list.Element
+ if parent == nil {
+ e = l.PushBack(commit)
+ } else {
+ var in = parent
+ for {
+ if in == nil {
+ break
+ } else if in.Value.(*Commit).Id.Equal(commit.Id) {
+ return nil
+ } else {
+ if in.Next() == nil {
+ break
+ }
+ if in.Value.(*Commit).Committer.When.Equal(commit.Committer.When) {
+ break
+ }
+
+ if in.Value.(*Commit).Committer.When.After(commit.Committer.When) &&
+ in.Next().Value.(*Commit).Committer.When.Before(commit.Committer.When) {
+ break
+ }
+ }
+ in = in.Next()
+ }
+
+ e = l.InsertAfter(commit, in)
+ }
+
+ var pr = parent
+ if commit.ParentCount() > 1 {
+ pr = e
+ }
+
+ for i := 0; i < commit.ParentCount(); i++ {
+ id, err := commit.ParentId(i)
+ if err != nil {
+ return err
+ }
+ err = repo.commitsBefore(lock, l, pr, id, 0)
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func (repo *Repository) getCommitsBefore(id sha1) (*list.List, error) {
+ l := list.New()
+ lock := new(sync.Mutex)
+ err := repo.commitsBefore(lock, l, nil, id, 0)
+ return l, err
+}
+
+func (repo *Repository) getCommitOfRelPath(id sha1, relPath string) (*Commit, error) {
+ stdout, _, err := com.ExecCmdDir(repo.Path, "git", "log", "-1", prettyLogFormat, id.String(), "--", relPath)
+ if err != nil {
+ return nil, err
+ }
+
+ id, err = NewIdFromString(string(stdout))
+ if err != nil {
+ return nil, err
+ }
+
+ return repo.getCommit(id)
+}
diff --git a/modules/git/repo_object.go b/modules/git/repo_object.go
new file mode 100644
index 0000000000..da79f2c731
--- /dev/null
+++ b/modules/git/repo_object.go
@@ -0,0 +1,14 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+type ObjectType string
+
+const (
+ COMMIT ObjectType = "commit"
+ TREE ObjectType = "tree"
+ BLOB ObjectType = "blob"
+ TAG ObjectType = "tag"
+)
diff --git a/modules/git/repo_tag.go b/modules/git/repo_tag.go
new file mode 100644
index 0000000000..cefbe783ab
--- /dev/null
+++ b/modules/git/repo_tag.go
@@ -0,0 +1,96 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "errors"
+ "strings"
+
+ "github.com/Unknwon/com"
+)
+
+func IsTagExist(repoPath, tagName string) bool {
+ _, _, err := com.ExecCmdDir(repoPath, "git", "show-ref", "--verify", "refs/tags/"+tagName)
+ return err == nil
+}
+
+func (repo *Repository) IsTagExist(tagName string) bool {
+ return IsTagExist(repo.Path, tagName)
+}
+
+// GetTags returns all tags of given repository.
+func (repo *Repository) GetTags() ([]string, error) {
+ stdout, stderr, err := com.ExecCmdDir(repo.Path, "git", "tag", "-l")
+ if err != nil {
+ return nil, errors.New(stderr)
+ }
+ tags := strings.Split(stdout, "\n")
+ return tags[:len(tags)-1], nil
+}
+
+func (repo *Repository) getTag(id sha1) (*Tag, error) {
+ if repo.tagCache != nil {
+ if t, ok := repo.tagCache[id]; ok {
+ return t, nil
+ }
+ } else {
+ repo.tagCache = make(map[sha1]*Tag, 10)
+ }
+
+ // Get tag type.
+ tp, stderr, err := com.ExecCmdDir(repo.Path, "git", "cat-file", "-t", id.String())
+ if err != nil {
+ return nil, errors.New(stderr)
+ }
+
+ // Tag is a commit.
+ if ObjectType(tp) == COMMIT {
+ tag := &Tag{
+ Id: id,
+ Object: id,
+ Type: string(COMMIT),
+ repo: repo,
+ }
+ repo.tagCache[id] = tag
+ return tag, nil
+ }
+
+ // Tag with message.
+ data, bytErr, err := com.ExecCmdDirBytes(repo.Path, "git", "cat-file", "-p", id.String())
+ if err != nil {
+ return nil, errors.New(string(bytErr))
+ }
+
+ tag, err := parseTagData(data)
+ if err != nil {
+ return nil, err
+ }
+
+ tag.Id = id
+ tag.repo = repo
+
+ repo.tagCache[id] = tag
+ return tag, nil
+}
+
+// GetTag returns a Git tag by given name.
+func (repo *Repository) GetTag(tagName string) (*Tag, error) {
+ stdout, stderr, err := com.ExecCmdDir(repo.Path, "git", "show-ref", "--tags", tagName)
+ if err != nil {
+ return nil, errors.New(stderr)
+ }
+
+ id, err := NewIdFromString(strings.Split(stdout, " ")[0])
+ if err != nil {
+ return nil, err
+ }
+
+ tag, err := repo.getTag(id)
+ if err != nil {
+ return nil, err
+ }
+ tag.Name = tagName
+ return tag, nil
+}
diff --git a/modules/git/repo_tree.go b/modules/git/repo_tree.go
new file mode 100644
index 0000000000..da394c3605
--- /dev/null
+++ b/modules/git/repo_tree.go
@@ -0,0 +1,32 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "fmt"
+
+ "github.com/Unknwon/com"
+)
+
+// Find the tree object in the repository.
+func (repo *Repository) GetTree(idStr string) (*Tree, error) {
+ id, err := NewIdFromString(idStr)
+ if err != nil {
+ return nil, err
+ }
+ return repo.getTree(id)
+}
+
+func (repo *Repository) getTree(id sha1) (*Tree, error) {
+ treePath := filepathFromSHA1(repo.Path, id.String())
+ if !com.IsFile(treePath) {
+ _, _, err := com.ExecCmdDir(repo.Path, "git", "ls-tree", id.String())
+ if err != nil {
+ return nil, fmt.Errorf("repo.getTree: %v", ErrNotExist)
+ }
+ }
+
+ return NewTree(repo, id), nil
+}
diff --git a/modules/git/sha1.go b/modules/git/sha1.go
new file mode 100644
index 0000000000..5c57e89b6a
--- /dev/null
+++ b/modules/git/sha1.go
@@ -0,0 +1,87 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "encoding/hex"
+ "errors"
+ "fmt"
+ "strings"
+)
+
+var (
+ IdNotExist = errors.New("sha1 id not exist")
+)
+
+type sha1 [20]byte
+
+// Return true if s has the same sha1 as caller.
+// Support 40-length-string, []byte, sha1
+func (id sha1) Equal(s2 interface{}) bool {
+ switch v := s2.(type) {
+ case string:
+ if len(v) != 40 {
+ return false
+ }
+ return v == id.String()
+ case []byte:
+ if len(v) != 20 {
+ return false
+ }
+ for i, v := range v {
+ if id[i] != v {
+ return false
+ }
+ }
+ case sha1:
+ for i, v := range v {
+ if id[i] != v {
+ return false
+ }
+ }
+ default:
+ return false
+ }
+ return true
+}
+
+// Return string (hex) representation of the Oid
+func (s sha1) String() string {
+ result := make([]byte, 0, 40)
+ hexvalues := []byte("0123456789abcdef")
+ for i := 0; i < 20; i++ {
+ result = append(result, hexvalues[s[i]>>4])
+ result = append(result, hexvalues[s[i]&0xf])
+ }
+ return string(result)
+}
+
+// Create a new sha1 from a 20 byte slice.
+func NewId(b []byte) (sha1, error) {
+ var id sha1
+ if len(b) != 20 {
+ return id, errors.New("Length must be 20")
+ }
+
+ for i := 0; i < 20; i++ {
+ id[i] = b[i]
+ }
+ return id, nil
+}
+
+// Create a new sha1 from a Sha1 string of length 40.
+func NewIdFromString(s string) (sha1, error) {
+ s = strings.TrimSpace(s)
+ var id sha1
+ if len(s) != 40 {
+ return id, fmt.Errorf("Length must be 40")
+ }
+ b, err := hex.DecodeString(s)
+ if err != nil {
+ return id, err
+ }
+
+ return NewId(b)
+}
diff --git a/modules/git/signature.go b/modules/git/signature.go
new file mode 100644
index 0000000000..20f647d266
--- /dev/null
+++ b/modules/git/signature.go
@@ -0,0 +1,40 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "bytes"
+ "strconv"
+ "time"
+)
+
+// Author and Committer information
+type Signature struct {
+ Email string
+ Name string
+ When time.Time
+}
+
+// Helper to get a signature from the commit line, which looks like this:
+// author Patrick Gundlach <gundlach@speedata.de> 1378823654 +0200
+// but without the "author " at the beginning (this method should)
+// be used for author and committer.
+//
+// FIXME: include timezone!
+func newSignatureFromCommitline(line []byte) (*Signature, error) {
+ sig := new(Signature)
+ emailstart := bytes.IndexByte(line, '<')
+ sig.Name = string(line[:emailstart-1])
+ emailstop := bytes.IndexByte(line, '>')
+ sig.Email = string(line[emailstart+1 : emailstop])
+ timestop := bytes.IndexByte(line[emailstop+2:], ' ')
+ timestring := string(line[emailstop+2 : emailstop+2+timestop])
+ seconds, err := strconv.ParseInt(timestring, 10, 64)
+ if err != nil {
+ return nil, err
+ }
+ sig.When = time.Unix(seconds, 0)
+ return sig, nil
+}
diff --git a/modules/git/tag.go b/modules/git/tag.go
new file mode 100644
index 0000000000..7fbbcb1cbf
--- /dev/null
+++ b/modules/git/tag.go
@@ -0,0 +1,67 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "bytes"
+)
+
+// Tag represents a Git tag.
+type Tag struct {
+ Name string
+ Id sha1
+ repo *Repository
+ Object sha1 // The id of this commit object
+ Type string
+ Tagger *Signature
+ TagMessage string
+}
+
+func (tag *Tag) Commit() (*Commit, error) {
+ return tag.repo.getCommit(tag.Object)
+}
+
+// Parse commit information from the (uncompressed) raw
+// data from the commit object.
+// \n\n separate headers from message
+func parseTagData(data []byte) (*Tag, error) {
+ tag := new(Tag)
+ // we now have the contents of the commit object. Let's investigate...
+ nextline := 0
+l:
+ for {
+ eol := bytes.IndexByte(data[nextline:], '\n')
+ switch {
+ case eol > 0:
+ line := data[nextline : nextline+eol]
+ spacepos := bytes.IndexByte(line, ' ')
+ reftype := line[:spacepos]
+ switch string(reftype) {
+ case "object":
+ id, err := NewIdFromString(string(line[spacepos+1:]))
+ if err != nil {
+ return nil, err
+ }
+ tag.Object = id
+ case "type":
+ // A commit can have one or more parents
+ tag.Type = string(line[spacepos+1:])
+ case "tagger":
+ sig, err := newSignatureFromCommitline(line[spacepos+1:])
+ if err != nil {
+ return nil, err
+ }
+ tag.Tagger = sig
+ }
+ nextline += eol + 1
+ case eol == 0:
+ tag.TagMessage = string(data[nextline+1:])
+ break l
+ default:
+ break l
+ }
+ }
+ return tag, nil
+}
diff --git a/modules/git/tree.go b/modules/git/tree.go
new file mode 100644
index 0000000000..03152c34ac
--- /dev/null
+++ b/modules/git/tree.go
@@ -0,0 +1,124 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "bytes"
+ "errors"
+ "strings"
+
+ "github.com/Unknwon/com"
+)
+
+var (
+ ErrNotExist = errors.New("error not exist")
+)
+
+// A tree is a flat directory listing.
+type Tree struct {
+ Id sha1
+ repo *Repository
+
+ // parent tree
+ ptree *Tree
+
+ entries Entries
+ entriesParsed bool
+}
+
+// Parse tree information from the (uncompressed) raw
+// data from the tree object.
+func parseTreeData(tree *Tree, data []byte) ([]*TreeEntry, error) {
+ entries := make([]*TreeEntry, 0, 10)
+ l := len(data)
+ pos := 0
+ for pos < l {
+ entry := new(TreeEntry)
+ entry.ptree = tree
+ step := 6
+ switch string(data[pos : pos+step]) {
+ case "100644":
+ entry.mode = ModeBlob
+ entry.Type = BLOB
+ case "100755":
+ entry.mode = ModeExec
+ entry.Type = BLOB
+ case "120000":
+ entry.mode = ModeSymlink
+ entry.Type = BLOB
+ case "160000":
+ entry.mode = ModeCommit
+ entry.Type = COMMIT
+ case "040000":
+ entry.mode = ModeTree
+ entry.Type = TREE
+ default:
+ return nil, errors.New("unknown type: " + string(data[pos:pos+step]))
+ }
+ pos += step + 6 // Skip string type of entry type.
+
+ step = 40
+ id, err := NewIdFromString(string(data[pos : pos+step]))
+ if err != nil {
+ return nil, err
+ }
+ entry.Id = id
+ pos += step + 1 // Skip half of sha1.
+
+ step = bytes.IndexByte(data[pos:], '\n')
+ entry.name = string(data[pos : pos+step])
+ pos += step + 1
+ entries = append(entries, entry)
+ }
+ return entries, nil
+}
+
+func (t *Tree) SubTree(rpath string) (*Tree, error) {
+ if len(rpath) == 0 {
+ return t, nil
+ }
+
+ paths := strings.Split(rpath, "/")
+ var err error
+ var g = t
+ var p = t
+ var te *TreeEntry
+ for _, name := range paths {
+ te, err = p.GetTreeEntryByPath(name)
+ if err != nil {
+ return nil, err
+ }
+
+ g, err = t.repo.getTree(te.Id)
+ if err != nil {
+ return nil, err
+ }
+ g.ptree = p
+ p = g
+ }
+ return g, nil
+}
+
+func (t *Tree) ListEntries(relpath string) (Entries, error) {
+ if t.entriesParsed {
+ return t.entries, nil
+ }
+ t.entriesParsed = true
+
+ stdout, _, err := com.ExecCmdDirBytes(t.repo.Path,
+ "git", "ls-tree", t.Id.String())
+ if err != nil {
+ return nil, err
+ }
+ t.entries, err = parseTreeData(t, stdout)
+ return t.entries, err
+}
+
+func NewTree(repo *Repository, id sha1) *Tree {
+ tree := new(Tree)
+ tree.Id = id
+ tree.repo = repo
+ return tree
+}
diff --git a/modules/git/tree_blob.go b/modules/git/tree_blob.go
new file mode 100644
index 0000000000..debc722bc9
--- /dev/null
+++ b/modules/git/tree_blob.go
@@ -0,0 +1,46 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "fmt"
+ "path"
+ "strings"
+)
+
+func (t *Tree) GetTreeEntryByPath(relpath string) (*TreeEntry, error) {
+ if len(relpath) == 0 {
+ return &TreeEntry{
+ Id: t.Id,
+ Type: TREE,
+ mode: ModeTree,
+ }, nil
+ // return nil, fmt.Errorf("GetTreeEntryByPath(empty relpath): %v", ErrNotExist)
+ }
+
+ relpath = path.Clean(relpath)
+ parts := strings.Split(relpath, "/")
+ var err error
+ tree := t
+ for i, name := range parts {
+ if i == len(parts)-1 {
+ entries, err := tree.ListEntries(path.Dir(relpath))
+ if err != nil {
+ return nil, err
+ }
+ for _, v := range entries {
+ if v.name == name {
+ return v, nil
+ }
+ }
+ } else {
+ tree, err = tree.SubTree(name)
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+ return nil, fmt.Errorf("GetTreeEntryByPath: %v", ErrNotExist)
+}
diff --git a/modules/git/tree_entry.go b/modules/git/tree_entry.go
new file mode 100644
index 0000000000..e842f2332a
--- /dev/null
+++ b/modules/git/tree_entry.go
@@ -0,0 +1,109 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "sort"
+ "strings"
+
+ "github.com/Unknwon/com"
+)
+
+type EntryMode int
+
+// There are only a few file modes in Git. They look like unix file modes, but they can only be
+// one of these.
+const (
+ ModeBlob EntryMode = 0100644
+ ModeExec EntryMode = 0100755
+ ModeSymlink EntryMode = 0120000
+ ModeCommit EntryMode = 0160000
+ ModeTree EntryMode = 0040000
+)
+
+type TreeEntry struct {
+ Id sha1
+ Type ObjectType
+
+ mode EntryMode
+ name string
+
+ ptree *Tree
+
+ commited bool
+
+ size int64
+ sized bool
+}
+
+func (te *TreeEntry) Name() string {
+ return te.name
+}
+
+func (te *TreeEntry) Size() int64 {
+ if te.IsDir() {
+ return 0
+ }
+
+ if te.sized {
+ return te.size
+ }
+
+ stdout, _, err := com.ExecCmdDir(te.ptree.repo.Path, "git", "cat-file", "-s", te.Id.String())
+ if err != nil {
+ return 0
+ }
+
+ te.sized = true
+ te.size = com.StrTo(strings.TrimSpace(stdout)).MustInt64()
+ return te.size
+}
+
+func (te *TreeEntry) IsDir() bool {
+ return te.mode == ModeTree
+}
+
+func (te *TreeEntry) EntryMode() EntryMode {
+ return te.mode
+}
+
+func (te *TreeEntry) Blob() *Blob {
+ return &Blob{
+ repo: te.ptree.repo,
+ TreeEntry: te,
+ }
+}
+
+type Entries []*TreeEntry
+
+var sorter = []func(t1, t2 *TreeEntry) bool{
+ func(t1, t2 *TreeEntry) bool {
+ return t1.IsDir() && !t2.IsDir()
+ },
+ func(t1, t2 *TreeEntry) bool {
+ return t1.name < t2.name
+ },
+}
+
+func (bs Entries) Len() int { return len(bs) }
+func (bs Entries) Swap(i, j int) { bs[i], bs[j] = bs[j], bs[i] }
+func (bs Entries) Less(i, j int) bool {
+ t1, t2 := bs[i], bs[j]
+ var k int
+ for k = 0; k < len(sorter)-1; k++ {
+ sort := sorter[k]
+ switch {
+ case sort(t1, t2):
+ return true
+ case sort(t2, t1):
+ return false
+ }
+ }
+ return sorter[k](t1, t2)
+}
+
+func (bs Entries) Sort() {
+ sort.Sort(bs)
+}
diff --git a/modules/git/utils.go b/modules/git/utils.go
new file mode 100644
index 0000000000..3c0c60f235
--- /dev/null
+++ b/modules/git/utils.go
@@ -0,0 +1,27 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "path/filepath"
+ "strings"
+)
+
+const prettyLogFormat = `--pretty=format:%H`
+
+func RefEndName(refStr string) string {
+ index := strings.LastIndex(refStr, "/")
+ if index != -1 {
+ return refStr[index+1:]
+ }
+ return refStr
+}
+
+// If the object is stored in its own file (i.e not in a pack file),
+// this function returns the full path to the object file.
+// It does not test if the file exists.
+func filepathFromSHA1(rootdir, sha1 string) string {
+ return filepath.Join(rootdir, "objects", sha1[:2], sha1[2:])
+}
diff --git a/modules/git/version.go b/modules/git/version.go
new file mode 100644
index 0000000000..683e859b47
--- /dev/null
+++ b/modules/git/version.go
@@ -0,0 +1,43 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package git
+
+import (
+ "errors"
+ "strings"
+
+ "github.com/Unknwon/com"
+)
+
+// Version represents version of Git.
+type Version struct {
+ Major, Minor, Patch int
+}
+
+// GetVersion returns current Git version installed.
+func GetVersion() (Version, error) {
+ stdout, stderr, err := com.ExecCmd("git", "version")
+ if err != nil {
+ return Version{}, errors.New(stderr)
+ }
+
+ infos := strings.Split(stdout, " ")
+ if len(infos) < 3 {
+ return Version{}, errors.New("not enough output")
+ }
+
+ v := Version{}
+ for i, s := range strings.Split(strings.TrimSpace(infos[2]), ".") {
+ switch i {
+ case 0:
+ v.Major, _ = com.StrTo(s).Int()
+ case 1:
+ v.Minor, _ = com.StrTo(s).Int()
+ case 2:
+ v.Patch, _ = com.StrTo(s).Int()
+ }
+ }
+ return v, nil
+}
diff --git a/modules/log/console.go b/modules/log/console.go
new file mode 100644
index 0000000000..92d6c2a406
--- /dev/null
+++ b/modules/log/console.go
@@ -0,0 +1,73 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package log
+
+import (
+ "encoding/json"
+ "log"
+ "os"
+ "runtime"
+)
+
+type Brush func(string) string
+
+func NewBrush(color string) Brush {
+ pre := "\033["
+ reset := "\033[0m"
+ return func(text string) string {
+ return pre + color + "m" + text + reset
+ }
+}
+
+var colors = []Brush{
+ NewBrush("1;36"), // Trace cyan
+ NewBrush("1;34"), // Debug blue
+ NewBrush("1;32"), // Info green
+ NewBrush("1;33"), // Warn yellow
+ NewBrush("1;31"), // Error red
+ NewBrush("1;35"), // Critical purple
+ NewBrush("1;31"), // Fatal red
+}
+
+// ConsoleWriter implements LoggerInterface and writes messages to terminal.
+type ConsoleWriter struct {
+ lg *log.Logger
+ Level int `json:"level"`
+}
+
+// create ConsoleWriter returning as LoggerInterface.
+func NewConsole() LoggerInterface {
+ return &ConsoleWriter{
+ lg: log.New(os.Stdout, "", log.Ldate|log.Ltime),
+ Level: TRACE,
+ }
+}
+
+func (cw *ConsoleWriter) Init(config string) error {
+ return json.Unmarshal([]byte(config), cw)
+}
+
+func (cw *ConsoleWriter) WriteMsg(msg string, skip, level int) error {
+ if cw.Level > level {
+ return nil
+ }
+ if runtime.GOOS == "windows" {
+ cw.lg.Println(msg)
+ } else {
+ cw.lg.Println(colors[level](msg))
+ }
+ return nil
+}
+
+func (_ *ConsoleWriter) Destroy() {
+}
+
+func (_ *ConsoleWriter) Flush() {
+
+}
+
+func init() {
+ Register("console", NewConsole)
+}
diff --git a/modules/log/file.go b/modules/log/file.go
new file mode 100644
index 0000000000..cce5352969
--- /dev/null
+++ b/modules/log/file.go
@@ -0,0 +1,237 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package log
+
+import (
+ "encoding/json"
+ "errors"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "path/filepath"
+ "strings"
+ "sync"
+ "time"
+)
+
+// FileLogWriter implements LoggerInterface.
+// It writes messages by lines limit, file size limit, or time frequency.
+type FileLogWriter struct {
+ *log.Logger
+ mw *MuxWriter
+ // The opened file
+ Filename string `json:"filename"`
+
+ Maxlines int `json:"maxlines"`
+ maxlines_curlines int
+
+ // Rotate at size
+ Maxsize int `json:"maxsize"`
+ maxsize_cursize int
+
+ // Rotate daily
+ Daily bool `json:"daily"`
+ Maxdays int64 `json:"maxdays`
+ daily_opendate int
+
+ Rotate bool `json:"rotate"`
+
+ startLock sync.Mutex // Only one log can write to the file
+
+ Level int `json:"level"`
+}
+
+// an *os.File writer with locker.
+type MuxWriter struct {
+ sync.Mutex
+ fd *os.File
+}
+
+// write to os.File.
+func (l *MuxWriter) Write(b []byte) (int, error) {
+ l.Lock()
+ defer l.Unlock()
+ return l.fd.Write(b)
+}
+
+// set os.File in writer.
+func (l *MuxWriter) SetFd(fd *os.File) {
+ if l.fd != nil {
+ l.fd.Close()
+ }
+ l.fd = fd
+}
+
+// create a FileLogWriter returning as LoggerInterface.
+func NewFileWriter() LoggerInterface {
+ w := &FileLogWriter{
+ Filename: "",
+ Maxlines: 1000000,
+ Maxsize: 1 << 28, //256 MB
+ Daily: true,
+ Maxdays: 7,
+ Rotate: true,
+ Level: TRACE,
+ }
+ // use MuxWriter instead direct use os.File for lock write when rotate
+ w.mw = new(MuxWriter)
+ // set MuxWriter as Logger's io.Writer
+ w.Logger = log.New(w.mw, "", log.Ldate|log.Ltime)
+ return w
+}
+
+// Init file logger with json config.
+// config like:
+// {
+// "filename":"log/gogs.log",
+// "maxlines":10000,
+// "maxsize":1<<30,
+// "daily":true,
+// "maxdays":15,
+// "rotate":true
+// }
+func (w *FileLogWriter) Init(config string) error {
+ if err := json.Unmarshal([]byte(config), w); err != nil {
+ return err
+ }
+ if len(w.Filename) == 0 {
+ return errors.New("config must have filename")
+ }
+ return w.StartLogger()
+}
+
+// start file logger. create log file and set to locker-inside file writer.
+func (w *FileLogWriter) StartLogger() error {
+ fd, err := w.createLogFile()
+ if err != nil {
+ return err
+ }
+ w.mw.SetFd(fd)
+ if err = w.initFd(); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (w *FileLogWriter) docheck(size int) {
+ w.startLock.Lock()
+ defer w.startLock.Unlock()
+ if w.Rotate && ((w.Maxlines > 0 && w.maxlines_curlines >= w.Maxlines) ||
+ (w.Maxsize > 0 && w.maxsize_cursize >= w.Maxsize) ||
+ (w.Daily && time.Now().Day() != w.daily_opendate)) {
+ if err := w.DoRotate(); err != nil {
+ fmt.Fprintf(os.Stderr, "FileLogWriter(%q): %s\n", w.Filename, err)
+ return
+ }
+ }
+ w.maxlines_curlines++
+ w.maxsize_cursize += size
+}
+
+// write logger message into file.
+func (w *FileLogWriter) WriteMsg(msg string, skip, level int) error {
+ if level < w.Level {
+ return nil
+ }
+ n := 24 + len(msg) // 24 stand for the length "2013/06/23 21:00:22 [T] "
+ w.docheck(n)
+ w.Logger.Println(msg)
+ return nil
+}
+
+func (w *FileLogWriter) createLogFile() (*os.File, error) {
+ // Open the log file
+ return os.OpenFile(w.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0660)
+}
+
+func (w *FileLogWriter) initFd() error {
+ fd := w.mw.fd
+ finfo, err := fd.Stat()
+ if err != nil {
+ return fmt.Errorf("get stat: %s\n", err)
+ }
+ w.maxsize_cursize = int(finfo.Size())
+ w.daily_opendate = time.Now().Day()
+ if finfo.Size() > 0 {
+ content, err := ioutil.ReadFile(w.Filename)
+ if err != nil {
+ return err
+ }
+ w.maxlines_curlines = len(strings.Split(string(content), "\n"))
+ } else {
+ w.maxlines_curlines = 0
+ }
+ return nil
+}
+
+// DoRotate means it need to write file in new file.
+// new file name like xx.log.2013-01-01.2
+func (w *FileLogWriter) DoRotate() error {
+ _, err := os.Lstat(w.Filename)
+ if err == nil { // file exists
+ // Find the next available number
+ num := 1
+ fname := ""
+ for ; err == nil && num <= 999; num++ {
+ fname = w.Filename + fmt.Sprintf(".%s.%03d", time.Now().Format("2006-01-02"), num)
+ _, err = os.Lstat(fname)
+ }
+ // return error if the last file checked still existed
+ if err == nil {
+ return fmt.Errorf("rotate: cannot find free log number to rename %s\n", w.Filename)
+ }
+
+ // block Logger's io.Writer
+ w.mw.Lock()
+ defer w.mw.Unlock()
+
+ fd := w.mw.fd
+ fd.Close()
+
+ // close fd before rename
+ // Rename the file to its newfound home
+ if err = os.Rename(w.Filename, fname); err != nil {
+ return fmt.Errorf("Rotate: %s\n", err)
+ }
+
+ // re-start logger
+ if err = w.StartLogger(); err != nil {
+ return fmt.Errorf("Rotate StartLogger: %s\n", err)
+ }
+
+ go w.deleteOldLog()
+ }
+
+ return nil
+}
+
+func (w *FileLogWriter) deleteOldLog() {
+ dir := filepath.Dir(w.Filename)
+ filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
+ if !info.IsDir() && info.ModTime().Unix() < (time.Now().Unix()-60*60*24*w.Maxdays) {
+ if strings.HasPrefix(filepath.Base(path), filepath.Base(w.Filename)) {
+ os.Remove(path)
+ }
+ }
+ return nil
+ })
+}
+
+// destroy file logger, close file writer.
+func (w *FileLogWriter) Destroy() {
+ w.mw.fd.Close()
+}
+
+// flush file logger.
+// there are no buffering messages in file logger in memory.
+// flush file means sync file from disk.
+func (w *FileLogWriter) Flush() {
+ w.mw.fd.Sync()
+}
+
+func init() {
+ Register("file", NewFileWriter)
+}
diff --git a/modules/log/log.go b/modules/log/log.go
index 24f0442d1e..6ca6b5b0b1 100644
--- a/modules/log/log.go
+++ b/modules/log/log.go
@@ -2,32 +2,29 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
-// Package log is a wrapper of logs for short calling name.
package log
import (
"fmt"
"os"
"path"
-
- "github.com/gogits/logs"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "sync"
)
var (
- loggers []*logs.BeeLogger
- GitLogger *logs.BeeLogger
+ loggers []*Logger
+ GitLogger *Logger
)
-func init() {
- NewLogger(0, "console", `{"level": 0}`)
-}
-
func NewLogger(bufLen int64, mode, config string) {
- logger := logs.NewLogger(bufLen)
+ logger := newLogger(bufLen)
isExist := false
for _, l := range loggers {
- if l.Adapter == mode {
+ if l.adapter == mode {
isExist = true
l = logger
}
@@ -35,15 +32,14 @@ func NewLogger(bufLen int64, mode, config string) {
if !isExist {
loggers = append(loggers, logger)
}
- logger.SetLogFuncCallDepth(3)
if err := logger.SetLogger(mode, config); err != nil {
- Fatal("Fail to set logger(%s): %v", mode, err)
+ Fatal(1, "Fail to set logger(%s): %v", mode, err)
}
}
func NewGitLogger(logPath string) {
os.MkdirAll(path.Dir(logPath), os.ModePerm)
- GitLogger = logs.NewLogger(0)
+ GitLogger = newLogger(0)
GitLogger.SetLogger("file", fmt.Sprintf(`{"level":0,"filename":"%s","rotate":false}`, logPath))
}
@@ -65,28 +61,237 @@ func Info(format string, v ...interface{}) {
}
}
-func Error(format string, v ...interface{}) {
+func Warn(format string, v ...interface{}) {
for _, logger := range loggers {
- logger.Error(format, v...)
+ logger.Warn(format, v...)
}
}
-func Warn(format string, v ...interface{}) {
+func Error(skip int, format string, v ...interface{}) {
for _, logger := range loggers {
- logger.Warn(format, v...)
+ logger.Error(skip, format, v...)
}
}
-func Critical(format string, v ...interface{}) {
+func Critical(skip int, format string, v ...interface{}) {
for _, logger := range loggers {
- logger.Critical(format, v...)
+ logger.Critical(skip, format, v...)
}
}
-func Fatal(format string, v ...interface{}) {
- Error(format, v...)
+func Fatal(skip int, format string, v ...interface{}) {
+ Error(skip, format, v...)
for _, l := range loggers {
l.Close()
}
- os.Exit(2)
+ os.Exit(1)
+}
+
+// .___ _______________________________________________________ _________ ___________
+// | |\ \__ ___/\_ _____/\______ \_ _____/ _ \ \_ ___ \\_ _____/
+// | |/ | \| | | __)_ | _/| __)/ /_\ \/ \ \/ | __)_
+// | / | \ | | \ | | \| \/ | \ \____| \
+// |___\____|__ /____| /_______ / |____|_ /\___ /\____|__ /\______ /_______ /
+// \/ \/ \/ \/ \/ \/ \/
+
+type LogLevel int
+
+const (
+ TRACE = iota
+ DEBUG
+ INFO
+ WARN
+ ERROR
+ CRITICAL
+ FATAL
+)
+
+// LoggerInterface represents behaviors of a logger provider.
+type LoggerInterface interface {
+ Init(config string) error
+ WriteMsg(msg string, skip, level int) error
+ Destroy()
+ Flush()
+}
+
+type loggerType func() LoggerInterface
+
+var adapters = make(map[string]loggerType)
+
+// Register registers given logger provider to adapters.
+func Register(name string, log loggerType) {
+ if log == nil {
+ panic("log: register provider is nil")
+ }
+ if _, dup := adapters[name]; dup {
+ panic("log: register called twice for provider \"" + name + "\"")
+ }
+ adapters[name] = log
+}
+
+type logMsg struct {
+ skip, level int
+ msg string
+}
+
+// Logger is default logger in beego application.
+// it can contain several providers and log message into all providers.
+type Logger struct {
+ adapter string
+ lock sync.Mutex
+ level int
+ msg chan *logMsg
+ outputs map[string]LoggerInterface
+ quit chan bool
+}
+
+// newLogger initializes and returns a new logger.
+func newLogger(buffer int64) *Logger {
+ l := &Logger{
+ msg: make(chan *logMsg, buffer),
+ outputs: make(map[string]LoggerInterface),
+ quit: make(chan bool),
+ }
+ go l.StartLogger()
+ return l
+}
+
+// SetLogger sets new logger instanse with given logger adapter and config.
+func (l *Logger) SetLogger(adapter string, config string) error {
+ l.lock.Lock()
+ defer l.lock.Unlock()
+ if log, ok := adapters[adapter]; ok {
+ lg := log()
+ if err := lg.Init(config); err != nil {
+ return err
+ }
+ l.outputs[adapter] = lg
+ l.adapter = adapter
+ } else {
+ panic("log: unknown adapter \"" + adapter + "\" (forgotten Register?)")
+ }
+ return nil
+}
+
+// DelLogger removes a logger adapter instance.
+func (l *Logger) DelLogger(adapter string) error {
+ l.lock.Lock()
+ defer l.lock.Unlock()
+ if lg, ok := l.outputs[adapter]; ok {
+ lg.Destroy()
+ delete(l.outputs, adapter)
+ } else {
+ panic("log: unknown adapter \"" + adapter + "\" (forgotten Register?)")
+ }
+ return nil
+}
+
+func (l *Logger) writerMsg(skip, level int, msg string) error {
+ if l.level > level {
+ return nil
+ }
+ lm := &logMsg{
+ skip: skip,
+ level: level,
+ }
+
+ // Only error information needs locate position for debugging.
+ if lm.level >= ERROR {
+ pc, file, line, ok := runtime.Caller(skip)
+ if ok {
+ // Get caller function name.
+ fn := runtime.FuncForPC(pc)
+ var fnName string
+ if fn == nil {
+ fnName = "?()"
+ } else {
+ fnName = strings.TrimLeft(filepath.Ext(fn.Name()), ".") + "()"
+ }
+
+ lm.msg = fmt.Sprintf("[%s:%d %s] %s", filepath.Base(file), line, fnName, msg)
+ } else {
+ lm.msg = msg
+ }
+ } else {
+ lm.msg = msg
+ }
+ l.msg <- lm
+ return nil
+}
+
+// StartLogger starts logger chan reading.
+func (l *Logger) StartLogger() {
+ for {
+ select {
+ case bm := <-l.msg:
+ for _, l := range l.outputs {
+ l.WriteMsg(bm.msg, bm.skip, bm.level)
+ }
+ case <-l.quit:
+ return
+ }
+ }
+}
+
+// Flush flushs all chan data.
+func (l *Logger) Flush() {
+ for _, l := range l.outputs {
+ l.Flush()
+ }
+}
+
+// Close closes logger, flush all chan data and destroy all adapter instances.
+func (l *Logger) Close() {
+ l.quit <- true
+ for {
+ if len(l.msg) > 0 {
+ bm := <-l.msg
+ for _, l := range l.outputs {
+ l.WriteMsg(bm.msg, bm.skip, bm.level)
+ }
+ } else {
+ break
+ }
+ }
+ for _, l := range l.outputs {
+ l.Flush()
+ l.Destroy()
+ }
+}
+
+func (l *Logger) Trace(format string, v ...interface{}) {
+ msg := fmt.Sprintf("[T] "+format, v...)
+ l.writerMsg(0, TRACE, msg)
+}
+
+func (l *Logger) Debug(format string, v ...interface{}) {
+ msg := fmt.Sprintf("[D] "+format, v...)
+ l.writerMsg(0, DEBUG, msg)
+}
+
+func (l *Logger) Info(format string, v ...interface{}) {
+ msg := fmt.Sprintf("[I] "+format, v...)
+ l.writerMsg(0, INFO, msg)
+}
+
+func (l *Logger) Warn(format string, v ...interface{}) {
+ msg := fmt.Sprintf("[W] "+format, v...)
+ l.writerMsg(0, WARN, msg)
+}
+
+func (l *Logger) Error(skip int, format string, v ...interface{}) {
+ msg := fmt.Sprintf("[E] "+format, v...)
+ l.writerMsg(skip, ERROR, msg)
+}
+
+func (l *Logger) Critical(skip int, format string, v ...interface{}) {
+ msg := fmt.Sprintf("[C] "+format, v...)
+ l.writerMsg(skip, CRITICAL, msg)
+}
+
+func (l *Logger) Fatal(skip int, format string, v ...interface{}) {
+ msg := fmt.Sprintf("[F] "+format, v...)
+ l.writerMsg(skip, FATAL, msg)
+ l.Close()
+ os.Exit(1)
}
diff --git a/modules/mailer/mail.go b/modules/mailer/mail.go
index 62e15cd7fe..5a662b9010 100644
--- a/modules/mailer/mail.go
+++ b/modules/mailer/mail.go
@@ -10,10 +10,12 @@ import (
"fmt"
"path"
+ "github.com/Unknwon/com"
+ "github.com/Unknwon/macaron"
+
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/log"
- "github.com/gogits/gogs/modules/middleware"
"github.com/gogits/gogs/modules/setting"
)
@@ -55,7 +57,7 @@ func GetMailTmplData(u *models.User) map[interface{}]interface{} {
// create a time limit code for user active
func CreateUserActiveCode(u *models.User, startInf interface{}) string {
minutes := setting.Service.ActiveCodeLives
- data := base.ToStr(u.Id) + u.Email + u.LowerName + u.Passwd + u.Rands
+ data := com.ToStr(u.Id) + u.Email + u.LowerName + u.Passwd + u.Rands
code := base.CreateTimeLimitCode(data, minutes, startInf)
// add tail hex username
@@ -64,7 +66,7 @@ func CreateUserActiveCode(u *models.User, startInf interface{}) string {
}
// Send user register mail with active code
-func SendRegisterMail(r *middleware.Render, u *models.User) {
+func SendRegisterMail(r macaron.Render, u *models.User) {
code := CreateUserActiveCode(u, nil)
subject := "Register success, Welcome"
@@ -72,7 +74,7 @@ func SendRegisterMail(r *middleware.Render, u *models.User) {
data["Code"] = code
body, err := r.HTMLString(string(AUTH_REGISTER_SUCCESS), data)
if err != nil {
- log.Error("mail.SendRegisterMail(fail to render): %v", err)
+ log.Error(4, "mail.SendRegisterMail(fail to render): %v", err)
return
}
@@ -83,7 +85,7 @@ func SendRegisterMail(r *middleware.Render, u *models.User) {
}
// Send email verify active email.
-func SendActiveMail(r *middleware.Render, u *models.User) {
+func SendActiveMail(r macaron.Render, u *models.User) {
code := CreateUserActiveCode(u, nil)
subject := "Verify your e-mail address"
@@ -92,7 +94,7 @@ func SendActiveMail(r *middleware.Render, u *models.User) {
data["Code"] = code
body, err := r.HTMLString(string(AUTH_ACTIVE), data)
if err != nil {
- log.Error("mail.SendActiveMail(fail to render): %v", err)
+ log.Error(4, "mail.SendActiveMail(fail to render): %v", err)
return
}
@@ -103,7 +105,7 @@ func SendActiveMail(r *middleware.Render, u *models.User) {
}
// Send reset password email.
-func SendResetPasswdMail(r *middleware.Render, u *models.User) {
+func SendResetPasswdMail(r macaron.Render, u *models.User) {
code := CreateUserActiveCode(u, nil)
subject := "Reset your password"
@@ -112,7 +114,7 @@ func SendResetPasswdMail(r *middleware.Render, u *models.User) {
data["Code"] = code
body, err := r.HTMLString(string(AUTH_RESET_PASSWORD), data)
if err != nil {
- log.Error("mail.SendResetPasswdMail(fail to render): %v", err)
+ log.Error(4, "mail.SendResetPasswdMail(fail to render): %v", err)
return
}
@@ -157,7 +159,7 @@ func SendIssueNotifyMail(u, owner *models.User, repo *models.Repository, issue *
}
// SendIssueMentionMail sends mail notification for who are mentioned in issue.
-func SendIssueMentionMail(r *middleware.Render, u, owner *models.User,
+func SendIssueMentionMail(r macaron.Render, u, owner *models.User,
repo *models.Repository, issue *models.Issue, tos []string) error {
if len(tos) == 0 {
@@ -182,7 +184,7 @@ func SendIssueMentionMail(r *middleware.Render, u, owner *models.User,
}
// SendCollaboratorMail sends mail notification to new collaborator.
-func SendCollaboratorMail(r *middleware.Render, u, owner *models.User,
+func SendCollaboratorMail(r macaron.Render, u, owner *models.User,
repo *models.Repository) error {
subject := fmt.Sprintf("%s added you to %s", owner.Name, repo.Name)
diff --git a/modules/mailer/mailer.go b/modules/mailer/mailer.go
index d398de60cf..92cdfc7d6a 100644
--- a/modules/mailer/mailer.go
+++ b/modules/mailer/mailer.go
@@ -56,7 +56,7 @@ func processMailQueue() {
if len(msg.Info) > 0 {
info = ", info: " + msg.Info
}
- log.Error(fmt.Sprintf("Async sent email %d succeed, not send emails: %s%s err: %s", num, tos, info, err))
+ log.Error(4, fmt.Sprintf("Async sent email %d succeed, not send emails: %s%s err: %s", num, tos, info, err))
} else {
log.Trace(fmt.Sprintf("Async sent email %d succeed, sent emails: %s%s", num, tos, info))
}
diff --git a/modules/middleware/auth.go b/modules/middleware/auth.go
index 214dda23b9..741337da0b 100644
--- a/modules/middleware/auth.go
+++ b/modules/middleware/auth.go
@@ -8,7 +8,7 @@ import (
"net/url"
"strings"
- "github.com/go-martini/martini"
+ "github.com/Unknwon/macaron"
"github.com/gogits/gogs/modules/setting"
)
@@ -20,7 +20,7 @@ type ToggleOptions struct {
DisableCsrf bool
}
-func Toggle(options *ToggleOptions) martini.Handler {
+func Toggle(options *ToggleOptions) macaron.Handler {
return func(ctx *Context) {
// Cannot view any page before installation.
if !setting.InstallLock {
@@ -49,7 +49,7 @@ func Toggle(options *ToggleOptions) martini.Handler {
ctx.Redirect("/user/login")
return
} else if !ctx.User.IsActive && setting.Service.RegisterEmailConfirm {
- ctx.Data["Title"] = "Activate Your Account"
+ // ctx.Data["Title"] = "Activate Your Account"
ctx.HTML(200, "user/activate")
return
}
diff --git a/modules/middleware/binding/binding.go b/modules/middleware/binding/binding.go
index bf8ab52b2b..4103f5543f 100644
--- a/modules/middleware/binding/binding.go
+++ b/modules/middleware/binding/binding.go
@@ -16,7 +16,8 @@ import (
"strings"
"unicode/utf8"
- "github.com/go-martini/martini"
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
)
/*
@@ -37,44 +38,44 @@ import (
// your own error handling, use Form or Json middleware directly.
// An interface pointer can be added as a second argument in order
// to map the struct to a specific interface.
-func Bind(obj interface{}, ifacePtr ...interface{}) martini.Handler {
- return func(context martini.Context, req *http.Request) {
- contentType := req.Header.Get("Content-Type")
+func Bind(obj interface{}, ifacePtr ...interface{}) macaron.Handler {
+ return func(ctx *macaron.Context) {
+ contentType := ctx.Req.Header.Get("Content-Type")
if strings.Contains(contentType, "form-urlencoded") {
- context.Invoke(Form(obj, ifacePtr...))
+ ctx.Invoke(Form(obj, ifacePtr...))
} else if strings.Contains(contentType, "multipart/form-data") {
- context.Invoke(MultipartForm(obj, ifacePtr...))
+ ctx.Invoke(MultipartForm(obj, ifacePtr...))
} else if strings.Contains(contentType, "json") {
- context.Invoke(Json(obj, ifacePtr...))
+ ctx.Invoke(Json(obj, ifacePtr...))
} else {
- context.Invoke(Json(obj, ifacePtr...))
- if getErrors(context).Count() > 0 {
- context.Invoke(Form(obj, ifacePtr...))
+ ctx.Invoke(Json(obj, ifacePtr...))
+ if getErrors(ctx).Count() > 0 {
+ ctx.Invoke(Form(obj, ifacePtr...))
}
}
- context.Invoke(ErrorHandler)
+ ctx.Invoke(ErrorHandler)
}
}
// BindIgnErr will do the exactly same thing as Bind but without any
// error handling, which user has freedom to deal with them.
// This allows user take advantages of validation.
-func BindIgnErr(obj interface{}, ifacePtr ...interface{}) martini.Handler {
- return func(context martini.Context, req *http.Request) {
+func BindIgnErr(obj interface{}, ifacePtr ...interface{}) macaron.Handler {
+ return func(ctx *macaron.Context, req *http.Request) {
contentType := req.Header.Get("Content-Type")
if strings.Contains(contentType, "form-urlencoded") {
- context.Invoke(Form(obj, ifacePtr...))
+ ctx.Invoke(Form(obj, ifacePtr...))
} else if strings.Contains(contentType, "multipart/form-data") {
- context.Invoke(MultipartForm(obj, ifacePtr...))
+ ctx.Invoke(MultipartForm(obj, ifacePtr...))
} else if strings.Contains(contentType, "json") {
- context.Invoke(Json(obj, ifacePtr...))
+ ctx.Invoke(Json(obj, ifacePtr...))
} else {
- context.Invoke(Json(obj, ifacePtr...))
- if getErrors(context).Count() > 0 {
- context.Invoke(Form(obj, ifacePtr...))
+ ctx.Invoke(Json(obj, ifacePtr...))
+ if getErrors(ctx).Count() > 0 {
+ ctx.Invoke(Form(obj, ifacePtr...))
}
}
}
@@ -89,12 +90,12 @@ func BindIgnErr(obj interface{}, ifacePtr ...interface{}) martini.Handler {
// keys, for example: key=val1&key=val2&key=val3
// An interface pointer can be added as a second argument in order
// to map the struct to a specific interface.
-func Form(formStruct interface{}, ifacePtr ...interface{}) martini.Handler {
- return func(context martini.Context, req *http.Request) {
+func Form(formStruct interface{}, ifacePtr ...interface{}) macaron.Handler {
+ return func(ctx *macaron.Context) {
ensureNotPointer(formStruct)
formStruct := reflect.New(reflect.TypeOf(formStruct))
errors := newErrors()
- parseErr := req.ParseForm()
+ parseErr := ctx.Req.ParseForm()
// Format validation of the request body or the URL would add considerable overhead,
// and ParseForm does not complain when URL encoding is off.
@@ -104,14 +105,14 @@ func Form(formStruct interface{}, ifacePtr ...interface{}) martini.Handler {
errors.Overall[BindingDeserializationError] = parseErr.Error()
}
- mapForm(formStruct, req.Form, errors)
+ mapForm(formStruct, ctx.Req.Form, errors)
- validateAndMap(formStruct, context, errors, ifacePtr...)
+ validateAndMap(formStruct, ctx, errors, ifacePtr...)
}
}
-func MultipartForm(formStruct interface{}, ifacePtr ...interface{}) martini.Handler {
- return func(context martini.Context, req *http.Request) {
+func MultipartForm(formStruct interface{}, ifacePtr ...interface{}) macaron.Handler {
+ return func(ctx *macaron.Context) {
ensureNotPointer(formStruct)
formStruct := reflect.New(reflect.TypeOf(formStruct))
errors := newErrors()
@@ -119,7 +120,7 @@ func MultipartForm(formStruct interface{}, ifacePtr ...interface{}) martini.Hand
// Workaround for multipart forms returning nil instead of an error
// when content is not multipart
// https://code.google.com/p/go/issues/detail?id=6334
- multipartReader, err := req.MultipartReader()
+ multipartReader, err := ctx.Req.MultipartReader()
if err != nil {
errors.Overall[BindingDeserializationError] = err.Error()
} else {
@@ -129,12 +130,12 @@ func MultipartForm(formStruct interface{}, ifacePtr ...interface{}) martini.Hand
errors.Overall[BindingDeserializationError] = parseErr.Error()
}
- req.MultipartForm = form
+ ctx.Req.MultipartForm = form
}
- mapForm(formStruct, req.MultipartForm.Value, errors)
+ mapForm(formStruct, ctx.Req.MultipartForm.Value, errors)
- validateAndMap(formStruct, context, errors, ifacePtr...)
+ validateAndMap(formStruct, ctx, errors, ifacePtr...)
}
}
@@ -143,21 +144,21 @@ func MultipartForm(formStruct interface{}, ifacePtr ...interface{}) martini.Hand
// validated, but no error handling is actually performed here.
// An interface pointer can be added as a second argument in order
// to map the struct to a specific interface.
-func Json(jsonStruct interface{}, ifacePtr ...interface{}) martini.Handler {
- return func(context martini.Context, req *http.Request) {
+func Json(jsonStruct interface{}, ifacePtr ...interface{}) macaron.Handler {
+ return func(ctx *macaron.Context) {
ensureNotPointer(jsonStruct)
jsonStruct := reflect.New(reflect.TypeOf(jsonStruct))
errors := newErrors()
- if req.Body != nil {
- defer req.Body.Close()
+ if ctx.Req.Body != nil {
+ defer ctx.Req.Body.Close()
}
- if err := json.NewDecoder(req.Body).Decode(jsonStruct.Interface()); err != nil && err != io.EOF {
+ if err := json.NewDecoder(ctx.Req.Body).Decode(jsonStruct.Interface()); err != nil && err != io.EOF {
errors.Overall[BindingDeserializationError] = err.Error()
}
- validateAndMap(jsonStruct, context, errors, ifacePtr...)
+ validateAndMap(jsonStruct, ctx, errors, ifacePtr...)
}
}
@@ -165,15 +166,15 @@ func Json(jsonStruct interface{}, ifacePtr ...interface{}) martini.Handler {
// passed in is a Validator, then the user-defined Validate method
// is executed, and its errors are mapped to the context. This middleware
// performs no error handling: it merely detects them and maps them.
-func Validate(obj interface{}) martini.Handler {
- return func(context martini.Context, req *http.Request) {
+func Validate(obj interface{}) macaron.Handler {
+ return func(ctx *macaron.Context, l i18n.Locale) {
errors := newErrors()
validateStruct(errors, obj)
if validator, ok := obj.(Validator); ok {
- validator.Validate(errors, req, context)
+ validator.Validate(ctx, errors, l)
}
- context.Map(*errors)
+ ctx.Map(*errors)
}
}
@@ -387,9 +388,7 @@ func setWithProperType(valueKind reflect.Kind, val string, structField reflect.V
}
}
-// Don't pass in pointers to bind to. Can lead to bugs. See:
-// https://github.com/codegangsta/martini-contrib/issues/40
-// https://github.com/codegangsta/martini-contrib/pull/34#issuecomment-29683659
+// Don't pass in pointers to bind to. Can lead to bugs.
func ensureNotPointer(obj interface{}) {
if reflect.TypeOf(obj).Kind() == reflect.Ptr {
panic("Pointers are not accepted as binding models")
@@ -399,13 +398,13 @@ func ensureNotPointer(obj interface{}) {
// Performs validation and combines errors from validation
// with errors from deserialization, then maps both the
// resulting struct and the errors to the context.
-func validateAndMap(obj reflect.Value, context martini.Context, errors *Errors, ifacePtr ...interface{}) {
- context.Invoke(Validate(obj.Interface()))
- errors.Combine(getErrors(context))
- context.Map(*errors)
- context.Map(obj.Elem().Interface())
+func validateAndMap(obj reflect.Value, ctx *macaron.Context, errors *Errors, ifacePtr ...interface{}) {
+ ctx.Invoke(Validate(obj.Interface()))
+ errors.Combine(getErrors(ctx))
+ ctx.Map(*errors)
+ ctx.Map(obj.Elem().Interface())
if len(ifacePtr) > 0 {
- context.MapTo(obj.Elem().Interface(), ifacePtr[0])
+ ctx.MapTo(obj.Elem().Interface(), ifacePtr[0])
}
}
@@ -413,8 +412,8 @@ func newErrors() *Errors {
return &Errors{make(map[string]string), make(map[string]string)}
}
-func getErrors(context martini.Context) Errors {
- return context.Get(reflect.TypeOf(Errors{})).Interface().(Errors)
+func getErrors(ctx *macaron.Context) Errors {
+ return ctx.GetVal(reflect.TypeOf(Errors{})).Interface().(Errors)
}
type (
@@ -422,7 +421,7 @@ type (
// validation before the request even gets to your application.
// The Validate method will be executed during the validation phase.
Validator interface {
- Validate(*Errors, *http.Request, martini.Context)
+ Validate(*macaron.Context, *Errors, i18n.Locale)
}
)
diff --git a/modules/middleware/context.go b/modules/middleware/context.go
index 90cfb1bb04..463d9ba980 100644
--- a/modules/middleware/context.go
+++ b/modules/middleware/context.go
@@ -5,42 +5,33 @@
package middleware
import (
- "crypto/hmac"
- "crypto/sha1"
- "encoding/base64"
"fmt"
"html/template"
"io"
"net/http"
- "net/url"
- "path/filepath"
- "strconv"
+ "path"
"strings"
"time"
- "github.com/go-martini/martini"
-
- "github.com/gogits/cache"
- "github.com/gogits/git"
- "github.com/gogits/session"
+ "github.com/Unknwon/macaron"
+ "github.com/macaron-contrib/i18n"
+ "github.com/macaron-contrib/session"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/auth"
"github.com/gogits/gogs/modules/base"
+ "github.com/gogits/gogs/modules/git"
"github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/setting"
)
// Context represents context of a request.
type Context struct {
- *Render
- c martini.Context
- p martini.Params
- Req *http.Request
- Res http.ResponseWriter
- Flash *Flash
- Session session.SessionStore
- Cache cache.Cache
+ *macaron.Context
+ i18n.Locale
+ Flash *session.Flash
+ Session session.Store
+
User *models.User
IsSigned bool
@@ -68,7 +59,8 @@ type Context struct {
HTTPS string
Git string
}
- Mirror *models.Mirror
+ CommitsCount int
+ Mirror *models.Mirror
}
}
@@ -107,12 +99,12 @@ func (ctx *Context) HasError() bool {
}
// HTML calls render.HTML underlying but reduce one argument.
-func (ctx *Context) HTML(status int, name base.TplName, htmlOpt ...HTMLOptions) {
- ctx.Render.HTML(status, string(name), ctx.Data, htmlOpt...)
+func (ctx *Context) HTML(status int, name base.TplName) {
+ ctx.Render.HTML(status, string(name), ctx.Data)
}
// RenderWithErr used for page has form validation but need to prompt error to users.
-func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form auth.Form) {
+func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form interface{}) {
if form != nil {
auth.AssignForm(form, ctx.Data)
}
@@ -124,8 +116,8 @@ func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form auth.Form)
// Handle handles and logs error by given status.
func (ctx *Context) Handle(status int, title string, err error) {
if err != nil {
- log.Error("%s: %v", title, err)
- if martini.Dev != martini.Prod {
+ log.Error(4, "%s: %v", title, err)
+ if macaron.Env != macaron.PROD {
ctx.Data["ErrorMsg"] = err
}
}
@@ -139,106 +131,6 @@ func (ctx *Context) Handle(status int, title string, err error) {
ctx.HTML(status, base.TplName(fmt.Sprintf("status/%d", status)))
}
-func (ctx *Context) GetCookie(name string) string {
- cookie, err := ctx.Req.Cookie(name)
- if err != nil {
- return ""
- }
- return cookie.Value
-}
-
-func (ctx *Context) SetCookie(name string, value string, others ...interface{}) {
- cookie := http.Cookie{}
- cookie.Name = name
- cookie.Value = value
-
- if len(others) > 0 {
- switch v := others[0].(type) {
- case int:
- cookie.MaxAge = v
- case int64:
- cookie.MaxAge = int(v)
- case int32:
- cookie.MaxAge = int(v)
- }
- }
-
- // default "/"
- if len(others) > 1 {
- if v, ok := others[1].(string); ok && len(v) > 0 {
- cookie.Path = v
- }
- } else {
- cookie.Path = "/"
- }
-
- // default empty
- if len(others) > 2 {
- if v, ok := others[2].(string); ok && len(v) > 0 {
- cookie.Domain = v
- }
- }
-
- // default empty
- if len(others) > 3 {
- switch v := others[3].(type) {
- case bool:
- cookie.Secure = v
- default:
- if others[3] != nil {
- cookie.Secure = true
- }
- }
- }
-
- // default false. for session cookie default true
- if len(others) > 4 {
- if v, ok := others[4].(bool); ok && v {
- cookie.HttpOnly = true
- }
- }
-
- ctx.Res.Header().Add("Set-Cookie", cookie.String())
-}
-
-// Get secure cookie from request by a given key.
-func (ctx *Context) GetSecureCookie(Secret, key string) (string, bool) {
- val := ctx.GetCookie(key)
- if val == "" {
- return "", false
- }
-
- parts := strings.SplitN(val, "|", 3)
-
- if len(parts) != 3 {
- return "", false
- }
-
- vs := parts[0]
- timestamp := parts[1]
- sig := parts[2]
-
- h := hmac.New(sha1.New, []byte(Secret))
- fmt.Fprintf(h, "%s%s", vs, timestamp)
-
- if fmt.Sprintf("%02x", h.Sum(nil)) != sig {
- return "", false
- }
- res, _ := base64.URLEncoding.DecodeString(vs)
- return string(res), true
-}
-
-// Set Secure cookie for response.
-func (ctx *Context) SetSecureCookie(Secret, name, value string, others ...interface{}) {
- vs := base64.URLEncoding.EncodeToString([]byte(value))
- timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
- h := hmac.New(sha1.New, []byte(Secret))
- fmt.Fprintf(h, "%s%s", vs, timestamp)
- sig := fmt.Sprintf("%02x", h.Sum(nil))
- cookie := strings.Join([]string{vs, timestamp, sig}, "|")
- ctx.SetCookie(name, cookie, others...)
-}
-
func (ctx *Context) CsrfToken() string {
if len(ctx.csrfToken) > 0 {
return ctx.csrfToken
@@ -271,16 +163,16 @@ func (ctx *Context) ServeFile(file string, names ...string) {
if len(names) > 0 {
name = names[0]
} else {
- name = filepath.Base(file)
+ name = path.Base(file)
}
- ctx.Res.Header().Set("Content-Description", "File Transfer")
- ctx.Res.Header().Set("Content-Type", "application/octet-stream")
- ctx.Res.Header().Set("Content-Disposition", "attachment; filename="+name)
- ctx.Res.Header().Set("Content-Transfer-Encoding", "binary")
- ctx.Res.Header().Set("Expires", "0")
- ctx.Res.Header().Set("Cache-Control", "must-revalidate")
- ctx.Res.Header().Set("Pragma", "public")
- http.ServeFile(ctx.Res, ctx.Req, file)
+ ctx.Resp.Header().Set("Content-Description", "File Transfer")
+ ctx.Resp.Header().Set("Content-Type", "application/octet-stream")
+ ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+name)
+ ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary")
+ ctx.Resp.Header().Set("Expires", "0")
+ ctx.Resp.Header().Set("Cache-Control", "must-revalidate")
+ ctx.Resp.Header().Set("Pragma", "public")
+ http.ServeFile(ctx.Resp, ctx.Req, file)
}
func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interface{}) {
@@ -291,87 +183,52 @@ func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interfa
modtime = v
}
}
- ctx.Res.Header().Set("Content-Description", "File Transfer")
- ctx.Res.Header().Set("Content-Type", "application/octet-stream")
- ctx.Res.Header().Set("Content-Disposition", "attachment; filename="+name)
- ctx.Res.Header().Set("Content-Transfer-Encoding", "binary")
- ctx.Res.Header().Set("Expires", "0")
- ctx.Res.Header().Set("Cache-Control", "must-revalidate")
- ctx.Res.Header().Set("Pragma", "public")
- http.ServeContent(ctx.Res, ctx.Req, name, modtime, r)
-}
-
-type Flash struct {
- url.Values
- ErrorMsg, SuccessMsg string
-}
-
-func (f *Flash) Error(msg string) {
- f.Set("error", msg)
- f.ErrorMsg = msg
+ ctx.Resp.Header().Set("Content-Description", "File Transfer")
+ ctx.Resp.Header().Set("Content-Type", "application/octet-stream")
+ ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+name)
+ ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary")
+ ctx.Resp.Header().Set("Expires", "0")
+ ctx.Resp.Header().Set("Cache-Control", "must-revalidate")
+ ctx.Resp.Header().Set("Pragma", "public")
+ http.ServeContent(ctx.Resp, ctx.Req, name, modtime, r)
}
-func (f *Flash) Success(msg string) {
- f.Set("success", msg)
- f.SuccessMsg = msg
-}
-
-// InitContext initializes a classic context for a request.
-func InitContext() martini.Handler {
- return func(res http.ResponseWriter, r *http.Request, c martini.Context, rd *Render) {
+// Contexter initializes a classic context for a request.
+func Contexter() macaron.Handler {
+ return func(c *macaron.Context, l i18n.Locale, sess session.Store, f *session.Flash) {
ctx := &Context{
- c: c,
- // p: p,
- Req: r,
- Res: res,
- Cache: setting.Cache,
- Render: rd,
+ Context: c,
+ Locale: l,
+ Flash: f,
+ Session: sess,
}
- ctx.Data["PageStartTime"] = time.Now()
-
- // start session
- ctx.Session = setting.SessionManager.SessionStart(res, r)
+ // Cache: setting.Cache,
- // Get flash.
- values, err := url.ParseQuery(ctx.GetCookie("gogs_flash"))
- if err != nil {
- log.Error("InitContext.ParseQuery(flash): %v", err)
- } else if len(values) > 0 {
- ctx.Flash = &Flash{Values: values}
- ctx.Flash.ErrorMsg = ctx.Flash.Get("error")
- ctx.Flash.SuccessMsg = ctx.Flash.Get("success")
- ctx.Data["Flash"] = ctx.Flash
- ctx.SetCookie("gogs_flash", "", -1)
+ // Compute current URL for real-time change language.
+ link := ctx.Req.RequestURI
+ i := strings.Index(link, "?")
+ if i > -1 {
+ link = link[:i]
}
- ctx.Flash = &Flash{Values: url.Values{}}
+ ctx.Data["Link"] = link
- rw := res.(martini.ResponseWriter)
- rw.Before(func(martini.ResponseWriter) {
- ctx.Session.SessionRelease(res)
-
- if flash := ctx.Flash.Encode(); len(flash) > 0 {
- ctx.SetCookie("gogs_flash", flash, 0)
- }
- })
+ ctx.Data["PageStartTime"] = time.Now()
// Get user from session if logined.
- user := auth.SignedInUser(ctx.req.Header, ctx.Session)
- ctx.User = user
- ctx.IsSigned = user != nil
-
- ctx.Data["IsSigned"] = ctx.IsSigned
-
- if user != nil {
- ctx.Data["SignedUser"] = user
- ctx.Data["SignedUserId"] = user.Id
- ctx.Data["SignedUserName"] = user.Name
+ ctx.User = auth.SignedInUser(ctx.Req.Header, ctx.Session)
+ if ctx.User != nil {
+ ctx.IsSigned = true
+ ctx.Data["IsSigned"] = ctx.IsSigned
+ ctx.Data["SignedUser"] = ctx.User
+ ctx.Data["SignedUserId"] = ctx.User.Id
+ ctx.Data["SignedUserName"] = ctx.User.Name
ctx.Data["IsAdmin"] = ctx.User.IsAdmin
}
// If request sends files, parse them here otherwise the Query() can't be parsed and the CsrfToken will be invalid.
- if r.Method == "POST" && strings.Contains(r.Header.Get("Content-Type"), "multipart/form-data") {
- if err = ctx.Req.ParseMultipartForm(setting.AttachmentMaxSize << 20); err != nil && !strings.Contains(err.Error(), "EOF") { // 32MB max size
- ctx.Handle(500, "issue.Comment(ctx.Req.ParseMultipartForm)", err)
+ if ctx.Req.Method == "POST" && strings.Contains(ctx.Req.Header.Get("Content-Type"), "multipart/form-data") {
+ if err := ctx.Req.ParseMultipartForm(setting.AttachmentMaxSize << 20); err != nil && !strings.Contains(err.Error(), "EOF") { // 32MB max size
+ ctx.Handle(500, "ParseMultipartForm", err)
return
}
}
@@ -381,7 +238,5 @@ func InitContext() martini.Handler {
ctx.Data["CsrfTokenHtml"] = template.HTML(`<input type="hidden" name="_csrf" value="` + ctx.csrfToken + `">`)
c.Map(ctx)
-
- c.Next()
}
}
diff --git a/modules/middleware/logger.go b/modules/middleware/logger.go
deleted file mode 100644
index f918281a04..0000000000
--- a/modules/middleware/logger.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2014 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package middleware
-
-import (
- "fmt"
- "log"
- "net/http"
- "runtime"
- "time"
-
- "github.com/go-martini/martini"
-
- "github.com/gogits/gogs/modules/setting"
-)
-
-var isWindows bool
-
-func init() {
- isWindows = runtime.GOOS == "windows"
-}
-
-func Logger() martini.Handler {
- return func(res http.ResponseWriter, req *http.Request, ctx martini.Context, log *log.Logger) {
- if setting.DisableRouterLog {
- return
- }
-
- start := time.Now()
- log.Printf("Started %s %s", req.Method, req.URL.Path)
-
- rw := res.(martini.ResponseWriter)
- ctx.Next()
-
- content := fmt.Sprintf("Completed %v %s in %v", rw.Status(), http.StatusText(rw.Status()), time.Since(start))
- if !isWindows {
- switch rw.Status() {
- case 200:
- content = fmt.Sprintf("\033[1;32m%s\033[0m", content)
- case 304:
- content = fmt.Sprintf("\033[1;33m%s\033[0m", content)
- case 404:
- content = fmt.Sprintf("\033[1;31m%s\033[0m", content)
- case 500:
- content = fmt.Sprintf("\033[1;36m%s\033[0m", content)
- }
- }
- log.Println(content)
- }
-}
diff --git a/modules/middleware/render.go b/modules/middleware/render.go
deleted file mode 100644
index b5a0d697ae..0000000000
--- a/modules/middleware/render.go
+++ /dev/null
@@ -1,281 +0,0 @@
-// Copyright 2014 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-// foked from https://github.com/martini-contrib/render/blob/master/render.go
-package middleware
-
-import (
- "bytes"
- "encoding/json"
- "fmt"
- "html/template"
- "io"
- "io/ioutil"
- "net/http"
- "os"
- "path/filepath"
- "time"
-
- "github.com/go-martini/martini"
-
- "github.com/gogits/gogs/modules/base"
-)
-
-const (
- ContentType = "Content-Type"
- ContentLength = "Content-Length"
- ContentJSON = "application/json"
- ContentHTML = "text/html"
- ContentXHTML = "application/xhtml+xml"
- defaultCharset = "UTF-8"
-)
-
-var helperFuncs = template.FuncMap{
- "yield": func() (string, error) {
- return "", fmt.Errorf("yield called with no layout defined")
- },
-}
-
-type Delims struct {
- Left string
- Right string
-}
-
-type RenderOptions struct {
- Directory string
- Layout string
- Extensions []string
- Funcs []template.FuncMap
- Delims Delims
- Charset string
- IndentJSON bool
- HTMLContentType string
-}
-
-type HTMLOptions struct {
- Layout string
-}
-
-func Renderer(options ...RenderOptions) martini.Handler {
- opt := prepareOptions(options)
- cs := prepareCharset(opt.Charset)
- t := compile(opt)
- return func(res http.ResponseWriter, req *http.Request, c martini.Context) {
- var tc *template.Template
- if martini.Env == martini.Dev {
-
- tc = compile(opt)
- } else {
-
- tc, _ = t.Clone()
- }
-
- rd := &Render{res, req, tc, opt, cs, base.TmplData{}, time.Time{}}
-
- rd.Data["TmplLoadTimes"] = func() string {
- if rd.startTime.IsZero() {
- return ""
- }
- return fmt.Sprint(time.Since(rd.startTime).Nanoseconds()/1e6) + "ms"
- }
-
- c.Map(rd.Data)
- c.Map(rd)
- }
-}
-
-func prepareCharset(charset string) string {
- if len(charset) != 0 {
- return "; charset=" + charset
- }
-
- return "; charset=" + defaultCharset
-}
-
-func prepareOptions(options []RenderOptions) RenderOptions {
- var opt RenderOptions
- if len(options) > 0 {
- opt = options[0]
- }
-
- if len(opt.Directory) == 0 {
- opt.Directory = "templates"
- }
- if len(opt.Extensions) == 0 {
- opt.Extensions = []string{".tmpl"}
- }
- if len(opt.HTMLContentType) == 0 {
- opt.HTMLContentType = ContentHTML
- }
-
- return opt
-}
-
-func compile(options RenderOptions) *template.Template {
- dir := options.Directory
- t := template.New(dir)
- t.Delims(options.Delims.Left, options.Delims.Right)
-
- template.Must(t.Parse("Martini"))
-
- filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
- r, err := filepath.Rel(dir, path)
- if err != nil {
- return err
- }
-
- ext := filepath.Ext(r)
- for _, extension := range options.Extensions {
- if ext == extension {
-
- buf, err := ioutil.ReadFile(path)
- if err != nil {
- panic(err)
- }
-
- name := (r[0 : len(r)-len(ext)])
- tmpl := t.New(filepath.ToSlash(name))
-
- for _, funcs := range options.Funcs {
- tmpl = tmpl.Funcs(funcs)
- }
-
- template.Must(tmpl.Funcs(helperFuncs).Parse(string(buf)))
- break
- }
- }
-
- return nil
- })
-
- return t
-}
-
-type Render struct {
- http.ResponseWriter
- req *http.Request
- t *template.Template
- opt RenderOptions
- compiledCharset string
-
- Data base.TmplData
-
- startTime time.Time
-}
-
-func (r *Render) JSON(status int, v interface{}) {
- var result []byte
- var err error
- if r.opt.IndentJSON {
- result, err = json.MarshalIndent(v, "", " ")
- } else {
- result, err = json.Marshal(v)
- }
- if err != nil {
- http.Error(r, err.Error(), 500)
- return
- }
-
- r.Header().Set(ContentType, ContentJSON+r.compiledCharset)
- r.WriteHeader(status)
- r.Write(result)
-}
-
-func (r *Render) JSONString(v interface{}) (string, error) {
- var result []byte
- var err error
- if r.opt.IndentJSON {
- result, err = json.MarshalIndent(v, "", " ")
- } else {
- result, err = json.Marshal(v)
- }
- if err != nil {
- return "", err
- }
- return string(result), nil
-}
-
-func (r *Render) renderBytes(name string, binding interface{}, htmlOpt ...HTMLOptions) (*bytes.Buffer, error) {
- opt := r.prepareHTMLOptions(htmlOpt)
-
- if len(opt.Layout) > 0 {
- r.addYield(name, binding)
- name = opt.Layout
- }
-
- out, err := r.execute(name, binding)
- if err != nil {
- return nil, err
- }
-
- return out, nil
-}
-
-func (r *Render) HTML(status int, name string, binding interface{}, htmlOpt ...HTMLOptions) {
- r.startTime = time.Now()
-
- out, err := r.renderBytes(name, binding, htmlOpt...)
- if err != nil {
- http.Error(r, err.Error(), http.StatusInternalServerError)
- return
- }
-
- r.Header().Set(ContentType, r.opt.HTMLContentType+r.compiledCharset)
- r.WriteHeader(status)
- io.Copy(r, out)
-}
-
-func (r *Render) HTMLString(name string, binding interface{}, htmlOpt ...HTMLOptions) (string, error) {
- if out, err := r.renderBytes(name, binding, htmlOpt...); err != nil {
- return "", err
- } else {
- return out.String(), nil
- }
-}
-
-func (r *Render) Error(status int, message ...string) {
- r.WriteHeader(status)
- if len(message) > 0 {
- r.Write([]byte(message[0]))
- }
-}
-
-func (r *Render) Redirect(location string, status ...int) {
- code := http.StatusFound
- if len(status) == 1 {
- code = status[0]
- }
-
- http.Redirect(r, r.req, location, code)
-}
-
-func (r *Render) Template() *template.Template {
- return r.t
-}
-
-func (r *Render) execute(name string, binding interface{}) (*bytes.Buffer, error) {
- buf := new(bytes.Buffer)
- return buf, r.t.ExecuteTemplate(buf, name, binding)
-}
-
-func (r *Render) addYield(name string, binding interface{}) {
- funcs := template.FuncMap{
- "yield": func() (template.HTML, error) {
- buf, err := r.execute(name, binding)
-
- return template.HTML(buf.String()), err
- },
- }
- r.t.Funcs(funcs)
-}
-
-func (r *Render) prepareHTMLOptions(htmlOpt []HTMLOptions) HTMLOptions {
- if len(htmlOpt) > 0 {
- return htmlOpt[0]
- }
-
- return HTMLOptions{
- Layout: r.opt.Layout,
- }
-}
diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go
index c6febffb2e..c3d26c2837 100644
--- a/modules/middleware/repo.go
+++ b/modules/middleware/repo.go
@@ -10,20 +10,19 @@ import (
"net/url"
"strings"
- "github.com/go-martini/martini"
-
- "github.com/gogits/git"
+ "github.com/Unknwon/macaron"
"github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/git"
"github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/setting"
)
-func RepoAssignment(redirect bool, args ...bool) martini.Handler {
- return func(ctx *Context, params martini.Params) {
- // valid brachname
+func RepoAssignment(redirect bool, args ...bool) macaron.Handler {
+ return func(ctx *Context) {
+ // To valid brach name.
var validBranch bool
- // display bare quick start if it is a bare repo
+ // To display bare quick start if it is a bare repo.
var displayBare bool
if len(args) >= 1 {
@@ -35,51 +34,53 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
}
var (
- user *models.User
- err error
+ u *models.User
+ err error
)
- userName := params["username"]
- repoName := params["reponame"]
- refName := params["branchname"]
+ userName := ctx.Params(":username")
+ repoName := ctx.Params(":reponame")
+ refName := ctx.Params(":branchname")
+ if len(refName) == 0 {
+ refName = ctx.Params(":path")
+ }
- // TODO: need more advanced onwership and access level check.
// Collaborators who have write access can be seen as owners.
if ctx.IsSigned {
ctx.Repo.IsOwner, err = models.HasAccess(ctx.User.Name, userName+"/"+repoName, models.WRITABLE)
if err != nil {
- ctx.Handle(500, "RepoAssignment(HasAccess)", err)
+ ctx.Handle(500, "HasAccess", err)
return
}
ctx.Repo.IsTrueOwner = ctx.User.LowerName == strings.ToLower(userName)
}
if !ctx.Repo.IsTrueOwner {
- user, err = models.GetUserByName(userName)
+ u, err = models.GetUserByName(userName)
if err != nil {
if err == models.ErrUserNotExist {
- ctx.Handle(404, "RepoAssignment(GetUserByName)", err)
+ ctx.Handle(404, "GetUserByName", err)
return
} else if redirect {
ctx.Redirect("/")
return
}
- ctx.Handle(500, "RepoAssignment(GetUserByName)", err)
+ ctx.Handle(500, "GetUserByName", err)
return
}
} else {
- user = ctx.User
+ u = ctx.User
}
- if user == nil {
+ if u == nil {
if redirect {
ctx.Redirect("/")
return
}
- ctx.Handle(403, "RepoAssignment", errors.New("invliad user account for single repository"))
+ ctx.Handle(404, "RepoAssignment", errors.New("invliad user account for single repository"))
return
}
- ctx.Repo.Owner = user
+ ctx.Repo.Owner = u
// Organization owner team members are true owners as well.
if ctx.IsSigned && ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgOwner(ctx.User.Id) {
@@ -87,16 +88,19 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
}
// get repository
- repo, err := models.GetRepositoryByName(user.Id, repoName)
+ repo, err := models.GetRepositoryByName(u.Id, repoName)
if err != nil {
if err == models.ErrRepoNotExist {
- ctx.Handle(404, "RepoAssignment", err)
+ ctx.Handle(404, "GetRepositoryByName", err)
return
} else if redirect {
ctx.Redirect("/")
return
}
- ctx.Handle(500, "RepoAssignment", err)
+ ctx.Handle(500, "GetRepositoryByName", err)
+ return
+ } else if err = repo.GetOwner(); err != nil {
+ ctx.Handle(500, "GetOwner", err)
return
}
@@ -108,16 +112,16 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
// Check access.
if repo.IsPrivate && !ctx.Repo.IsOwner {
if ctx.User == nil {
- ctx.Handle(404, "RepoAssignment(HasAccess)", nil)
+ ctx.Handle(404, "HasAccess", nil)
return
}
hasAccess, err := models.HasAccess(ctx.User.Name, ctx.Repo.Owner.Name+"/"+repo.Name, models.READABLE)
if err != nil {
- ctx.Handle(500, "RepoAssignment(HasAccess)", err)
+ ctx.Handle(500, "HasAccess", err)
return
} else if !hasAccess {
- ctx.Handle(404, "RepoAssignment(HasAccess)", nil)
+ ctx.Handle(404, "HasAccess", nil)
return
}
}
@@ -127,7 +131,7 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
if repo.IsMirror {
ctx.Repo.Mirror, err = models.GetMirror(repo.Id)
if err != nil {
- ctx.Handle(500, "RepoAssignment(GetMirror)", err)
+ ctx.Handle(500, "GetMirror", err)
return
}
ctx.Data["MirrorInterval"] = ctx.Repo.Mirror.Interval
@@ -144,34 +148,33 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
return
}
ctx.Repo.GitRepo = gitRepo
- ctx.Repo.RepoLink = "/" + user.Name + "/" + repo.Name
+ ctx.Repo.RepoLink = "/" + u.Name + "/" + repo.Name
tags, err := ctx.Repo.GitRepo.GetTags()
if err != nil {
- ctx.Handle(500, "RepoAssignment(GetTags))", err)
+ ctx.Handle(500, "GetTags", err)
return
}
ctx.Repo.Repository.NumTags = len(tags)
- ctx.Data["Title"] = user.Name + "/" + repo.Name
+ ctx.Data["Title"] = u.Name + "/" + repo.Name
ctx.Data["Repository"] = repo
- ctx.Data["Owner"] = user
+ ctx.Data["Owner"] = ctx.Repo.Repository.Owner
ctx.Data["RepoLink"] = ctx.Repo.RepoLink
ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner
ctx.Data["IsRepositoryTrueOwner"] = ctx.Repo.IsTrueOwner
- ctx.Data["BranchName"] = ""
if setting.SshPort != 22 {
- ctx.Repo.CloneLink.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", setting.RunUser, setting.Domain, user.LowerName, repo.LowerName)
+ ctx.Repo.CloneLink.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", setting.RunUser, setting.Domain, u.LowerName, repo.LowerName)
} else {
- ctx.Repo.CloneLink.SSH = fmt.Sprintf("%s@%s:%s/%s.git", setting.RunUser, setting.Domain, user.LowerName, repo.LowerName)
+ ctx.Repo.CloneLink.SSH = fmt.Sprintf("%s@%s:%s/%s.git", setting.RunUser, setting.Domain, u.LowerName, repo.LowerName)
}
- ctx.Repo.CloneLink.HTTPS = fmt.Sprintf("%s%s/%s.git", setting.AppUrl, user.LowerName, repo.LowerName)
+ ctx.Repo.CloneLink.HTTPS = fmt.Sprintf("%s%s/%s.git", setting.AppUrl, u.LowerName, repo.LowerName)
ctx.Data["CloneLink"] = ctx.Repo.CloneLink
if ctx.Repo.Repository.IsGoget {
- ctx.Data["GoGetLink"] = fmt.Sprintf("%s%s/%s", setting.AppUrl, user.LowerName, repo.LowerName)
- ctx.Data["GoGetImport"] = fmt.Sprintf("%s/%s/%s", setting.Domain, user.LowerName, repo.LowerName)
+ ctx.Data["GoGetLink"] = fmt.Sprintf("%s%s/%s", setting.AppUrl, u.LowerName, repo.LowerName)
+ ctx.Data["GoGetImport"] = fmt.Sprintf("%s/%s/%s", setting.Domain, u.LowerName, repo.LowerName)
}
// when repo is bare, not valid branch
@@ -211,7 +214,7 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
return
}
} else {
- ctx.Handle(404, "RepoAssignment invalid repo", nil)
+ ctx.Handle(404, "RepoAssignment invalid repo", errors.New("branch or tag not exist"))
return
}
@@ -222,7 +225,7 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
} else {
brs, err := gitRepo.GetBranches()
if err != nil {
- ctx.Handle(500, "RepoAssignment(GetBranches))", err)
+ ctx.Handle(500, "GetBranches", err)
return
}
refName = brs[0]
@@ -233,6 +236,13 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
ctx.Data["IsBranch"] = ctx.Repo.IsBranch
ctx.Data["IsCommit"] = ctx.Repo.IsCommit
+
+ ctx.Repo.CommitsCount, err = ctx.Repo.Commit.CommitsCount()
+ if err != nil {
+ ctx.Handle(500, "CommitsCount", err)
+ return
+ }
+ ctx.Data["CommitsCount"] = ctx.Repo.CommitsCount
}
log.Debug("displayBare: %v; IsBare: %v", displayBare, ctx.Repo.Repository.IsBare)
@@ -240,7 +250,7 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
// repo is bare and display enable
if displayBare && ctx.Repo.Repository.IsBare {
log.Debug("Bare repository: %s", ctx.Repo.RepoLink)
- ctx.HTML(200, "repo/single_bare")
+ ctx.HTML(200, "repo/bare")
return
}
@@ -251,9 +261,10 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
ctx.Data["TagName"] = ctx.Repo.TagName
brs, err := ctx.Repo.GitRepo.GetBranches()
if err != nil {
- log.Error("RepoAssignment(GetBranches): %v", err)
+ log.Error(4, "GetBranches: %v", err)
}
ctx.Data["Branches"] = brs
+ ctx.Data["BrancheCount"] = len(brs)
// If not branch selected, try default one.
// If default branch doesn't exists, fall back to some other branch.
@@ -267,11 +278,11 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
ctx.Data["BranchName"] = ctx.Repo.BranchName
ctx.Data["CommitId"] = ctx.Repo.CommitId
- ctx.Data["IsRepositoryWatching"] = ctx.Repo.IsWatching
+ ctx.Data["IsWatchingRepo"] = ctx.Repo.IsWatching
}
}
-func RequireTrueOwner() martini.Handler {
+func RequireTrueOwner() macaron.Handler {
return func(ctx *Context) {
if !ctx.Repo.IsTrueOwner {
if !ctx.IsSigned {
diff --git a/modules/middleware/static.go b/modules/middleware/static.go
deleted file mode 100644
index 35f03f721a..0000000000
--- a/modules/middleware/static.go
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2013 The Martini Authors. All rights reserved.
-// Copyright 2014 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package middleware
-
-import (
- "log"
- "net/http"
- "path"
- "runtime"
- "strings"
-
- "github.com/go-martini/martini"
-
- "github.com/gogits/gogs/modules/setting"
-)
-
-// StaticOptions is a struct for specifying configuration options for the martini.Static middleware.
-type StaticOptions struct {
- // Prefix is the optional prefix used to serve the static directory content
- Prefix string
- // SkipLogging will disable [Static] log messages when a static file is served.
- SkipLogging bool
- // IndexFile defines which file to serve as index if it exists.
- IndexFile string
- // Expires defines which user-defined function to use for producing a HTTP Expires Header
- // https://developers.google.com/speed/docs/insights/LeverageBrowserCaching
- Expires func() string
-}
-
-func prepareStaticOptions(options []StaticOptions) StaticOptions {
- var opt StaticOptions
- if len(options) > 0 {
- opt = options[0]
- }
-
- // Defaults
- if len(opt.IndexFile) == 0 {
- opt.IndexFile = "index.html"
- }
- // Normalize the prefix if provided
- if opt.Prefix != "" {
- // Ensure we have a leading '/'
- if opt.Prefix[0] != '/' {
- opt.Prefix = "/" + opt.Prefix
- }
- // Remove any trailing '/'
- opt.Prefix = strings.TrimRight(opt.Prefix, "/")
- }
- return opt
-}
-
-// Static returns a middleware handler that serves static files in the given directory.
-func Static(directory string, staticOpt ...StaticOptions) martini.Handler {
- if runtime.GOOS == "windows" {
- if len(directory) < 2 || directory[1] != ':' {
- directory = path.Join(setting.StaticRootPath, directory)
- }
- } else if !path.IsAbs(directory) {
- directory = path.Join(setting.StaticRootPath, directory)
- }
-
- dir := http.Dir(directory)
- opt := prepareStaticOptions(staticOpt)
-
- return func(res http.ResponseWriter, req *http.Request, log *log.Logger) {
- if req.Method != "GET" && req.Method != "HEAD" {
- return
- }
- file := req.URL.Path
- // if we have a prefix, filter requests by stripping the prefix
- if opt.Prefix != "" {
- if !strings.HasPrefix(file, opt.Prefix) {
- return
- }
- file = file[len(opt.Prefix):]
- if file != "" && file[0] != '/' {
- return
- }
- }
- f, err := dir.Open(file)
- if err != nil {
- // discard the error?
- return
- }
- defer f.Close()
-
- fi, err := f.Stat()
- if err != nil {
- return
- }
-
- // try to serve index file
- if fi.IsDir() {
- // redirect if missing trailing slash
- if !strings.HasSuffix(req.URL.Path, "/") {
- http.Redirect(res, req, req.URL.Path+"/", http.StatusFound)
- return
- }
-
- file = path.Join(file, opt.IndexFile)
- f, err = dir.Open(file)
- if err != nil {
- return
- }
- defer f.Close()
-
- fi, err = f.Stat()
- if err != nil || fi.IsDir() {
- return
- }
- }
-
- if !opt.SkipLogging {
- log.Println("[Static] Serving " + file)
- }
-
- // Add an Expires header to the static content
- if opt.Expires != nil {
- res.Header().Set("Expires", opt.Expires())
- }
-
- http.ServeContent(res, req, file, fi.ModTime(), f)
- }
-}
diff --git a/modules/process/manager.go b/modules/process/manager.go
index ce8ab7b4b2..68c33315d0 100644
--- a/modules/process/manager.go
+++ b/modules/process/manager.go
@@ -78,7 +78,7 @@ func ExecDir(timeout time.Duration, dir, desc, cmdName string, args ...string) (
select {
case <-time.After(timeout):
if errKill := Kill(pid); errKill != nil {
- log.Error("Exec(%d:%s): %v", pid, desc, errKill)
+ log.Error(4, "Exec(%d:%s): %v", pid, desc, errKill)
}
<-done
return "", ErrExecTimeout.Error(), ErrExecTimeout
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index 48b17f95cf..dbd01051bf 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -14,12 +14,12 @@ import (
"github.com/Unknwon/com"
"github.com/Unknwon/goconfig"
+ "github.com/macaron-contrib/session"
"github.com/gogits/cache"
- "github.com/gogits/session"
- "github.com/gogits/gogs/modules/bin"
"github.com/gogits/gogs/modules/log"
+ // "github.com/gogits/gogs-ng/modules/ssh"
)
type Scheme string
@@ -45,6 +45,7 @@ var (
DisableRouterLog bool
CertFile, KeyFile string
StaticRootPath string
+ EnableGzip bool
// Security settings.
InstallLock bool
@@ -89,15 +90,22 @@ var (
// Session settings.
SessionProvider string
SessionConfig *session.Config
- SessionManager *session.Manager
// Global setting objects.
- Cfg *goconfig.ConfigFile
- CustomPath string // Custom directory path.
- ProdMode bool
- RunUser string
+ Cfg *goconfig.ConfigFile
+ ConfRootPath string
+ CustomPath string // Custom directory path.
+ ProdMode bool
+ RunUser string
+
+ // I18n settings.
+ Langs, Names []string
)
+func init() {
+ log.NewLogger(0, "console", `{"level": 0}`)
+}
+
func ExecPath() (string, error) {
file, err := exec.LookPath(os.Args[0])
if err != nil {
@@ -121,16 +129,13 @@ func WorkDir() (string, error) {
func NewConfigContext() {
workDir, err := WorkDir()
if err != nil {
- log.Fatal("Fail to get work directory: %v", err)
+ log.Fatal(4, "Fail to get work directory: %v", err)
}
+ ConfRootPath = path.Join(workDir, "conf")
- data, err := bin.Asset("conf/app.ini")
+ Cfg, err = goconfig.LoadConfigFile(path.Join(workDir, "conf/app.ini"))
if err != nil {
- log.Fatal("Fail to read 'conf/app.ini': %v", err)
- }
- Cfg, err = goconfig.LoadFromData(data)
- if err != nil {
- log.Fatal("Fail to parse 'conf/app.ini': %v", err)
+ log.Fatal(4, "Fail to parse 'conf/app.ini': %v", err)
}
CustomPath = os.Getenv("GOGS_CUSTOM")
@@ -141,10 +146,10 @@ func NewConfigContext() {
cfgPath := path.Join(CustomPath, "conf/app.ini")
if com.IsFile(cfgPath) {
if err = Cfg.AppendFiles(cfgPath); err != nil {
- log.Fatal("Fail to load custom 'conf/app.ini': %v", err)
+ log.Fatal(4, "Fail to load custom 'conf/app.ini': %v", err)
}
} else {
- log.Warn("No custom 'conf/app.ini' found")
+ log.Warn("No custom 'conf/app.ini' found, please go to '/install'")
}
AppName = Cfg.MustValue("", "APP_NAME", "Gogs: Go Git Service")
@@ -165,6 +170,7 @@ func NewConfigContext() {
DisableRouterLog = Cfg.MustBool("server", "DISABLE_ROUTER_LOG")
StaticRootPath = Cfg.MustValue("server", "STATIC_ROOT_PATH", workDir)
LogRootPath = Cfg.MustValue("log", "ROOT_PATH", path.Join(workDir, "log"))
+ EnableGzip = Cfg.MustBool("server", "ENABLE_GZIP")
InstallLock = Cfg.MustBool("security", "INSTALL_LOCK")
SecretKey = Cfg.MustValue("security", "SECRET_KEY")
@@ -173,14 +179,14 @@ func NewConfigContext() {
CookieRememberName = Cfg.MustValue("security", "COOKIE_REMEMBER_NAME")
ReverseProxyAuthUser = Cfg.MustValue("security", "REVERSE_PROXY_AUTHENTICATION_USER", "X-WEBAUTH-USER")
- AttachmentPath = Cfg.MustValue("attachment", "PATH", "files/attachments")
- AttachmentAllowedTypes = Cfg.MustValue("attachment", "ALLOWED_TYPES", "*/*")
+ AttachmentPath = Cfg.MustValue("attachment", "PATH", "data/attachments")
+ AttachmentAllowedTypes = Cfg.MustValue("attachment", "ALLOWED_TYPES", "image/jpeg|image/png")
AttachmentMaxSize = Cfg.MustInt64("attachment", "MAX_SIZE", 32)
AttachmentMaxFiles = Cfg.MustInt("attachment", "MAX_FILES", 10)
AttachmentEnabled = Cfg.MustBool("attachment", "ENABLE", true)
if err = os.MkdirAll(AttachmentPath, os.ModePerm); err != nil {
- log.Fatal("Could not create directory %s: %s", AttachmentPath, err)
+ log.Fatal(4, "Could not create directory %s: %s", AttachmentPath, err)
}
RunUser = Cfg.MustValue("", "RUN_USER")
@@ -190,13 +196,13 @@ func NewConfigContext() {
}
// Does not check run user when the install lock is off.
if InstallLock && RunUser != curUser {
- log.Fatal("Expect user(%s) but current user is: %s", RunUser, curUser)
+ log.Fatal(4, "Expect user(%s) but current user is: %s", RunUser, curUser)
}
// Determine and create root git reposiroty path.
homeDir, err := com.HomeDir()
if err != nil {
- log.Fatal("Fail to get home directory: %v", err)
+ log.Fatal(4, "Fail to get home directory: %v", err)
}
RepoRootPath = Cfg.MustValue("repository", "ROOT", filepath.Join(homeDir, "gogs-repositories"))
if !filepath.IsAbs(RepoRootPath) {
@@ -206,13 +212,16 @@ func NewConfigContext() {
}
if err = os.MkdirAll(RepoRootPath, os.ModePerm); err != nil {
- log.Fatal("Fail to create repository root path(%s): %v", RepoRootPath, err)
+ log.Fatal(4, "Fail to create repository root path(%s): %v", RepoRootPath, err)
}
ScriptType = Cfg.MustValue("repository", "SCRIPT_TYPE", "bash")
PictureService = Cfg.MustValueRange("picture", "SERVICE", "server",
[]string{"server"})
DisableGravatar = Cfg.MustBool("picture", "DISABLE_GRAVATAR")
+
+ Langs = Cfg.MustValueArray("i18n", "LANGS", ",")
+ Names = Cfg.MustValueArray("i18n", "NAMES", ",")
}
var Service struct {
@@ -255,7 +264,7 @@ func newLogService() {
mode = strings.TrimSpace(mode)
modeSec := "log." + mode
if _, err := Cfg.GetSection(modeSec); err != nil {
- log.Fatal("Unknown log mode: %s", mode)
+ log.Fatal(4, "Unknown log mode: %s", mode)
}
// Log level.
@@ -263,7 +272,7 @@ func newLogService() {
[]string{"Trace", "Debug", "Info", "Warn", "Error", "Critical"})
level, ok := logLevels[levelName]
if !ok {
- log.Fatal("Unknown log level: %s", levelName)
+ log.Fatal(4, "Unknown log level: %s", levelName)
}
// Generate log configuration.
@@ -318,15 +327,15 @@ func newCacheService() {
case "memory":
CacheConfig = fmt.Sprintf(`{"interval":%d}`, Cfg.MustInt("cache", "INTERVAL", 60))
case "redis", "memcache":
- CacheConfig = fmt.Sprintf(`{"conn":"%s"}`, Cfg.MustValue("cache", "HOST"))
+ CacheConfig = fmt.Sprintf(`{"conn":"%s"}`, strings.Trim(Cfg.MustValue("cache", "HOST"), "\" "))
default:
- log.Fatal("Unknown cache adapter: %s", CacheAdapter)
+ log.Fatal(4, "Unknown cache adapter: %s", CacheAdapter)
}
var err error
Cache, err = cache.NewCache(CacheAdapter, CacheConfig)
if err != nil {
- log.Fatal("Init cache system failed, adapter: %s, config: %s, %v\n",
+ log.Fatal(4, "Init cache system failed, adapter: %s, config: %s, %v\n",
CacheAdapter, CacheConfig, err)
}
@@ -338,12 +347,12 @@ func newSessionService() {
[]string{"memory", "file", "redis", "mysql"})
SessionConfig = new(session.Config)
- SessionConfig.ProviderConfig = Cfg.MustValue("session", "PROVIDER_CONFIG")
+ SessionConfig.ProviderConfig = strings.Trim(Cfg.MustValue("session", "PROVIDER_CONFIG"), "\" ")
SessionConfig.CookieName = Cfg.MustValue("session", "COOKIE_NAME", "i_like_gogits")
- SessionConfig.CookieSecure = Cfg.MustBool("session", "COOKIE_SECURE")
+ SessionConfig.Secure = Cfg.MustBool("session", "COOKIE_SECURE")
SessionConfig.EnableSetCookie = Cfg.MustBool("session", "ENABLE_SET_COOKIE", true)
- SessionConfig.GcIntervalTime = Cfg.MustInt64("session", "GC_INTERVAL_TIME", 86400)
- SessionConfig.SessionLifeTime = Cfg.MustInt64("session", "SESSION_LIFE_TIME", 86400)
+ SessionConfig.Gclifetime = Cfg.MustInt64("session", "GC_INTERVAL_TIME", 86400)
+ SessionConfig.Maxlifetime = Cfg.MustInt64("session", "SESSION_LIFE_TIME", 86400)
SessionConfig.SessionIDHashFunc = Cfg.MustValueRange("session", "SESSION_ID_HASHFUNC",
"sha1", []string{"sha1", "sha256", "md5"})
SessionConfig.SessionIDHashKey = Cfg.MustValue("session", "SESSION_ID_HASHKEY")
@@ -352,14 +361,6 @@ func newSessionService() {
os.MkdirAll(path.Dir(SessionConfig.ProviderConfig), os.ModePerm)
}
- var err error
- SessionManager, err = session.NewManager(SessionProvider, *SessionConfig)
- if err != nil {
- log.Fatal("Init session system failed, provider: %s, %v",
- SessionProvider, err)
- }
- go SessionManager.GC()
-
log.Info("Session Service Enabled")
}
@@ -441,4 +442,5 @@ func NewServices() {
newRegisterMailService()
newNotifyMailService()
newWebhookService()
+ // ssh.Listen("2022")
}
diff --git a/modules/ssh/ssh.go b/modules/ssh/ssh.go
new file mode 100644
index 0000000000..78ad678dc5
--- /dev/null
+++ b/modules/ssh/ssh.go
@@ -0,0 +1,119 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+// Prototype, git client looks like do not recognize req.Reply.
+package ssh
+
+import (
+ "fmt"
+ "io/ioutil"
+ "net"
+ "os"
+ "os/exec"
+ "strings"
+
+ "code.google.com/p/go.crypto/ssh"
+
+ "github.com/Unknwon/com"
+
+ "github.com/gogits/gogs-ng/modules/log"
+)
+
+func handleServerConn(keyId string, chans <-chan ssh.NewChannel) {
+ for newChan := range chans {
+ if newChan.ChannelType() != "session" {
+ newChan.Reject(ssh.UnknownChannelType, "unknown channel type")
+ continue
+ }
+ channel, requests, err := newChan.Accept()
+ if err != nil {
+ log.Error(3, "Could not accept channel: %v", err)
+ continue
+ }
+
+ go func(in <-chan *ssh.Request) {
+ defer channel.Close()
+ for req := range in {
+ ok, payload := false, strings.TrimLeft(string(req.Payload), "\x00")
+ fmt.Println("Request:", req.Type, req.WantReply, payload)
+ switch req.Type {
+ case "env":
+ args := strings.Split(strings.Replace(payload, "\x00", "", -1), "\v")
+ if len(args) != 2 {
+ break
+ }
+ args[0] = strings.TrimLeft(args[0], "\x04")
+ _, _, err := com.ExecCmdBytes("env", args[0]+"="+args[1])
+ if err != nil {
+ log.Error(3, "env: %v", err)
+ channel.Stderr().Write([]byte(err.Error()))
+ break
+ }
+ ok = true
+ case "exec":
+ os.Setenv("SSH_ORIGINAL_COMMAND", strings.TrimLeft(payload, "'("))
+ log.Info("Payload: %v", strings.TrimLeft(payload, "'("))
+ cmd := exec.Command("/Users/jiahuachen/Applications/Go/src/github.com/gogits/gogs-ng/gogs-ng", "serv", "key-"+keyId)
+ cmd.Stdout = channel
+ cmd.Stdin = channel
+ cmd.Stderr = channel.Stderr()
+ if err := cmd.Run(); err != nil {
+ log.Error(3, "exec: %v", err)
+ } else {
+ ok = true
+ }
+ }
+ fmt.Println("Done:", ok)
+ req.Reply(ok, nil) // BUG: Git on Mac seems not know this reply and hang?
+ }
+ fmt.Println("Done!!!")
+ }(requests)
+ }
+}
+
+func listen(config *ssh.ServerConfig, port string) {
+ listener, err := net.Listen("tcp", "0.0.0.0:"+port)
+ if err != nil {
+ panic(err)
+ }
+ for {
+ // Once a ServerConfig has been configured, connections can be accepted.
+ conn, err := listener.Accept()
+ if err != nil {
+ log.Error(3, "Fail to accept incoming connection: %v", err)
+ continue
+ }
+ // Before use, a handshake must be performed on the incoming net.Conn.
+ sConn, chans, reqs, err := ssh.NewServerConn(conn, config)
+ if err != nil {
+ log.Error(3, "Fail to handshake: %v", err)
+ continue
+ }
+ // The incoming Request channel must be serviced.
+ go ssh.DiscardRequests(reqs)
+ go handleServerConn(sConn.Permissions.Extensions["key-id"], chans)
+ }
+}
+
+// Listen starts a SSH server listens on given port.
+func Listen(port string) {
+ config := &ssh.ServerConfig{
+ PublicKeyCallback: func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) {
+ // keyCache[string(ssh.MarshalAuthorizedKey(key))] = 2
+ return &ssh.Permissions{Extensions: map[string]string{"key-id": "2"}}, nil
+ },
+ }
+
+ privateBytes, err := ioutil.ReadFile("/Users/jiahuachen/.ssh/id_rsa")
+ if err != nil {
+ panic("failed to load private key")
+ }
+ private, err := ssh.ParsePrivateKey(privateBytes)
+ if err != nil {
+ panic("failed to parse private key")
+ }
+ config.AddHostKey(private)
+
+ go listen(config, port)
+}