aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/app_settings
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:46 -0500
committerJacek Antonelli2008-08-15 23:44:46 -0500
commit38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4 (patch)
treeadca584755d22ca041a2dbfc35d4eca01f70b32c /linden/indra/newview/app_settings
parentREADME.txt (diff)
downloadmeta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.zip
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.gz
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.bz2
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.xz
Second Life viewer sources 1.13.2.12
Diffstat (limited to 'linden/indra/newview/app_settings')
-rw-r--r--linden/indra/newview/app_settings/CA.pem1811
-rw-r--r--linden/indra/newview/app_settings/anim.ini87
-rw-r--r--linden/indra/newview/app_settings/colors.ini20
-rw-r--r--linden/indra/newview/app_settings/colors.xml3
-rw-r--r--linden/indra/newview/app_settings/colors_base.ini157
-rw-r--r--linden/indra/newview/app_settings/colors_base.xml166
-rw-r--r--linden/indra/newview/app_settings/grass.xml47
-rw-r--r--linden/indra/newview/app_settings/keys.ini317
-rw-r--r--linden/indra/newview/app_settings/keywords.ini513
-rw-r--r--linden/indra/newview/app_settings/role_actions.xml314
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl7
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl19
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl35
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl7
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl20
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl6
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl17
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/groundF.glsl5
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/groundV.glsl6
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/scatterF.glsl17
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/scatterV.glsl15
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl19
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl37
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/waterF.glsl22
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/environment/waterV.glsl41
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl6
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl20
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl31
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl99
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/objects/alphaF.glsl6
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/objects/alphaV.glsl21
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyF.glsl18
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyV.glsl25
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl6
-rw-r--r--linden/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl21
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/avatar/avatarV.glsl48
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl23
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/environment/waterF.glsl136
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/environment/waterV.glsl53
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl36
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl126
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/objects/alphaF.glsl18
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/objects/alphaV.glsl24
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyF.glsl29
-rw-r--r--linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyV.glsl31
-rw-r--r--linden/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl128
-rw-r--r--linden/indra/newview/app_settings/shaders/class3/environment/groundF.glsl12
-rw-r--r--linden/indra/newview/app_settings/shaders/class3/environment/groundV.glsl11
-rw-r--r--linden/indra/newview/app_settings/shaders/class3/environment/scatterF.glsl25
-rw-r--r--linden/indra/newview/app_settings/shaders/class3/environment/scatterV.glsl16
-rw-r--r--linden/indra/newview/app_settings/shaders/class3/objects/bumpshinyF.glsl25
-rw-r--r--linden/indra/newview/app_settings/skinned_avatar.vp146
-rw-r--r--linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp179
-rw-r--r--linden/indra/newview/app_settings/skinned_avatar_nobump.vp128
-rw-r--r--linden/indra/newview/app_settings/skinned_avatar_select.vp60
-rw-r--r--linden/indra/newview/app_settings/skinned_avatar_wind.vp211
-rw-r--r--linden/indra/newview/app_settings/std_bump.ini18
-rw-r--r--linden/indra/newview/app_settings/trees.xml24
-rw-r--r--linden/indra/newview/app_settings/viewerart.ini503
-rw-r--r--linden/indra/newview/app_settings/viewerart.xml504
60 files changed, 6475 insertions, 0 deletions
diff --git a/linden/indra/newview/app_settings/CA.pem b/linden/indra/newview/app_settings/CA.pem
new file mode 100644
index 0000000..b14e734
--- /dev/null
+++ b/linden/indra/newview/app_settings/CA.pem
@@ -0,0 +1,1811 @@
1-----BEGIN CERTIFICATE-----
2MIIEuDCCA6CgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBtDELMAkGA1UEBhMCQlIx
3EzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25h
4bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxETAPBgNVBAcTCEJy
5YXNpbGlhMQswCQYDVQQIEwJERjExMC8GA1UEAxMoQXV0b3JpZGFkZSBDZXJ0aWZp
6Y2Fkb3JhIFJhaXogQnJhc2lsZWlyYTAeFw0wMTExMzAxMjU4MDBaFw0xMTExMzAy
7MzU5MDBaMIG0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE9MDsG
8A1UECxM0SW5zdGl0dXRvIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3Jt
9YWNhbyAtIElUSTERMA8GA1UEBxMIQnJhc2lsaWExCzAJBgNVBAgTAkRGMTEwLwYD
10VQQDEyhBdXRvcmlkYWRlIENlcnRpZmljYWRvcmEgUmFpeiBCcmFzaWxlaXJhMIIB
11IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwPMudwX/hvm+Uh2b/lQAcHVA
12isamaLkWdkwP9/S/tOKIgRrL6Oy+ZIGlOUdd6uYtk9Ma/3pUpgcfNAj0vYm5gsyj
13Qo9emsc+x6m4VWwk9iqMZSCK5EQkAq/Ut4n7KuLE1+gdftwdIgxfUsPt4CyNrY50
14QV57KM2UT8x5rrmzEjr7TICGpSUAl2gVqe6xaii+bmYR1QrmWaBSAG59LrkrjrYt
15bRhFboUDe1DK+6T8s5L6k8c8okpbHpa9veMztDVC9sPJ60MWXh6anVKo1UcLcbUR
16yEeNvZneVRKAAU6ouwdjDvwlsaKydFKwed0ToQ47bmUKgcm+wV3eTRk36UOnTwID
17AQABo4HSMIHPME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcCARYsaHR0
18cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYwPQYDVR0f
19BDYwNDAyoDCgLoYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0xDUmFj
20cmFpei5jcmwwHQYDVR0OBBYEFIr68VeEERM1kEL6V0lUaQ2kxPA3MA8GA1UdEwEB
21/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAZA5c1
22U/hgIh6OcgLAfiJgFWpvmDZWqlV30/bHFpj8iBobJSm5uDpt7TirYh1Uxe3fQaGl
23YjJe+9zd+izPRbBqXPVQA34EXcwk4qpWuf1hHriWfdrx8AcqSqr6CuQFwSr75Fos
24SzlwDADa70mT7wZjAmQhnZx2xJ6wfWlT9VQfS//JYeIc7Fue2JNLd00UOSMMaiK/
25t79enKNHEA2fupH3vEigf5Eh4bVAN5VohrTm6MY53x7XQZZr1ME7a55lFEnSeT0u
26mlOAjR2mAbvSM5X5oSZNrmetdzyTj2flCM8CC7MLab0kkdngRIlUBGHF1/S5nmPb
27K+9A46sd33oqK8n8
28-----END CERTIFICATE-----
29-----BEGIN CERTIFICATE-----
30MIIDtTCCAp2gAwIBAgIRANAeQJAAAEZSAAAAAQAAAAQwDQYJKoZIhvcNAQEF
31BQAwgYkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJEQzETMBEGA1UEBxMKV2Fz
32aGluZ3RvbjEXMBUGA1UEChMOQUJBLkVDT00sIElOQy4xGTAXBgNVBAMTEEFC
33QS5FQ09NIFJvb3QgQ0ExJDAiBgkqhkiG9w0BCQEWFWFkbWluQGRpZ3NpZ3Ry
34dXN0LmNvbTAeFw05OTA3MTIxNzMzNTNaFw0wOTA3MDkxNzMzNTNaMIGJMQsw
35CQYDVQQGEwJVUzELMAkGA1UECBMCREMxEzARBgNVBAcTCldhc2hpbmd0b24x
36FzAVBgNVBAoTDkFCQS5FQ09NLCBJTkMuMRkwFwYDVQQDExBBQkEuRUNPTSBS
37b290IENBMSQwIgYJKoZIhvcNAQkBFhVhZG1pbkBkaWdzaWd0cnVzdC5jb20w
38ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx0xHgeVVDBwhMywVC
39AOINg0Y95JO6tgbTDVm9PsHOQ2cBiiGo77zM0KLMsFWWU4RmBQDaREmA2FQK
40pSWGlO1jVv9wbKOhGdJ4vmgqRF4vz8wYXke8OrFGPR7wuSw0X4x8TAgpnUBV
416zx9g9618PeKgw6hTLQ6pbNfWiKX7BmbwQVo/ea3qZGULOR4SCQaJRk665Wc
42OQqKz0Ky8BzVX/tr7WhWezkscjiw7pOp03t3POtxA6k4ShZsiSrK2jMTecJV
43jO2cu/LLWxD4LmE1xilMKtAqY9FlWbT4zfn0AIS2V0KFnTKo+SpU+/94Qby9
44cSj0u5C8/5Y0BONFnqFGKECBAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8C
45AQgwDQYJKoZIhvcNAQEFBQADggEBAARvJYbk5pYntNlCwNDJALF/VD6Hsm0k
46qS8Kfv2kRLD4VAe9G52dyntQJHsRW0mjpr8SdNWJt7cvmGQlFLdh6X9ggGvT
47ZOirvRrWUfrAtF13Gn9kCF55xgVM8XrdTX3O5kh7VNJhkoHWG9YA8A6eKHeg
48TYjHInYZw8eeG6Z3ePhfm1bR8PIXrI6dWeYf/le22V7hXZ9F7GFoGUHhsiAm
49/lowdiT/QHI8eZ98IkirRs3bs4Ysj78FQdPB4xTjQRcm0HyncUwZ6EoPclgx
50fexgeqMiKL0ZJGA/O4dzwGvky663qyVDslUte6sGDnVdNOVdc22esnVApVnJ
51TzFxiNmIf1Q=
52-----END CERTIFICATE-----
53-----BEGIN CERTIFICATE-----
54MIID5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMC
55VVMxHTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNB
56bWVyaWNhIE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIg
57Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyOTA2MDAw
58MFoXDTM3MTEyMDE1MDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRB
59T0wgVGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUg
60SW5jLjE3MDUGA1UEAxMuQU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNh
61dGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
62ggEBAJnej8Mlo2k06AX3dLm/WpcZuS+U0pPlLYnKhHw/EEMbjIt8hFj4JHxI
63zyr9wBXZGH6EGhfT257XyuTZ16pYUYfw8ItITuLCxFlpMGK2MKKMCxGZYTVt
64fu/FsRkGIBKOQuHfD5YQUqjPnF+VFNivO3ULMSAfRC+iYkGzuxgh28pxPIzs
65trkNn+9R7017EvILDOGsQI93f7DKeHEMXRZxcKLXwjqFzQ6axOAAsNUl6twr
665JQtOJyJQVdkKGUZHLZEtMgxa44Be3ZZJX8VHIQIfHNlIAqhBC4aMqiaILGc
67LCFZ5/vP7nAtCMpjPiybkxlqpMKX/7eGV4iFbJ4VFitNLLMCAwEAAaNjMGEw
68DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoTYwFsuGkABFgFOxj8jYPXy+
69XxIwHwYDVR0jBBgwFoAUoTYwFsuGkABFgFOxj8jYPXy+XxIwDgYDVR0PAQH/
70BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQCKIBilvrMvtKaEAEAwKfq0FHNM
71eUWn9nDg6H5kHgqVfGphwu9OH77/yZkfB2FK4V1Mza3u0FIy2VkyvNp5ctZ7
72CegCgTXTCt8RHcl5oIBN/lrXVtbtDyqvpxh1MwzqwWEFT2qaifKNuZ8u77Bf
73WgDrvq2g+EQFZ7zLBO+eZMXpyD8Fv8YvBxzDNnGGyjhmSs3WuEvGbKeXO/oT
74LW4jYYehY0KswsuXn2Fozy1MBJ3XJU8KDk2QixhWqJNIV9xvrr2eZ1d3iVCz
75vhGbRWeDhhmH05i9CBoWH1iCC+GWaQVLjuyDUTEH1dSf/1l7qG6Fz9NLqUmw
76X7A5KGgOc90lmt4S
77-----END CERTIFICATE-----
78-----BEGIN CERTIFICATE-----
79MIIF5jCCA86gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMC
80VVMxHTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNB
81bWVyaWNhIE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIg
82Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyOTA2MDAw
83MFoXDTM3MDkyODIzNDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRB
84T0wgVGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUg
85SW5jLjE3MDUGA1UEAxMuQU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNh
86dGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
87ggIBALQ3WggWmRToVbEbJGv8x4vmh6mJ7ouZzU9AhqS2TcnZsdw8TQ2FTBVs
88RotSeJ/4I/1n9SQ6aF3Q92RhQVSji6UI0ilbm2BPJoPRYxJWSXakFsKlnUWs
89i4SVqBax7J/qJBrvuVdcmiQhLE0OcR+mrF1FdAOYxFSMFkpBd4aVdQxHAWZg
90/BXxD+r1FHjHDtdugRxev17nOirYlxcwfACtCJ0zr7iZYYCLqJV+FNwSbKTQ
912O9ASQI2+W6p1h2WVgSysy0WVoaP2SBXgM1nEG2wTPDaRrbqJS5Gr42whTg0
92ixQmgiusrpkLjhTXUr2eacOGAgvqdnUxCc4zGSGFQ+aJLZ8lN2fxI2rSAG2X
93+Z/nKcrdH9cG6rjJuQkhn8g/BsXS6RJGAE57COtCPStIbp1n3UsC5ETzkxml
94J85per5n0/xQpCyrw2u544BMzwVhSyvcG7mm0tCq9Stz+86QNZ8MUhy/XCFh
95EVsVS6kkUfykXPcXnbDS+gfpj1bkGoxoigTTfFrjnqKhynFbotSg5ymFXQNo
96Kk/SBtc9+cMDLz9l+WceR0DTYw/j1Y75hauXTLPXJuuWCpTehTacyH+BCQJJ
97Kg71ZDIMgtG6aoIbs0t0EfOMd9afv9w3pKdVBC/UMejTRrkDfNoSTllkt1Ex
98MVCgyhwn2RAurda9EGYrw7AiShJbAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMB
99Af8wHQYDVR0OBBYEFE9pbQN+nZ8HGEO8txBO1b+pxCAoMB8GA1UdIwQYMBaA
100FE9pbQN+nZ8HGEO8txBO1b+pxCAoMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG
1019w0BAQUFAAOCAgEAO/Ouyuguh4X7ZVnnrREUpVe8WJ8kEle7+z802u6teio0
102cnAxa8cZmIDJgt43d15Ui47y6mdPyXSEkVYJ1eV6moG2gcKtNuTxVBFT8zRF
103ASbI5Rq8NEQh3q0l/HYWdyGQgJhXnU7q7C+qPBR7V8F+GBRn7iTGvboVsNIY
104vbdVgaxTwOjdaRITQrcCtQVBynlQboIOcXKTRuidDV29rs4prWPVVRaAMCf/
105drr3uNZK49m1+VLQTkCpx+XCMseqdiThawVQ68W/ClTluUI8JPu3B5wwn3la
1065uBAUhX0/Kr0VvlEl4ftDmVyXr4m+02kLQgH3thcoNyBM5kYJRF3p+v9WAks
107mWsbivNSPxpNSGDxoPYzAlOL7SUJuA0t7Zdz7NeWH45gDtoQmy8YJPamTQr5
108O8t1wswvziRpyQoijlmn94IM19drNZxDAGrElWe6nEXLuA4399xOAU++CrYD
109062KRffaJ00psUjf5BHklka9bAI+1lHIlRcBFanyqqryvy9lG2/QuRqT9Y41
110xICHPpQvZuTpqP9BnHAqTyo5GJUefvthATxRCC4oGKQWDzH9OmwjkyB24f0H
111hdFbP9IcczLd+rn4jM8Ch3qaluTtT4mNU0OrDhPAARW0eTjb/G49nlG2uBOL
112Z8/5fNkiHfZdxRwBL5joeiQYvITX+txyW/fBOmg=
113-----END CERTIFICATE-----
114-----BEGIN CERTIFICATE-----
115MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJT
116RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4
117dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5h
118bCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzEL
119MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1B
120ZGRUcnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1
121c3QgRXh0ZXJuYWwgQ0EgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
122AQoCggEBALf3GjPm8gAELTngTlvtH7xsD821+iO2zt6bETOXpClMfZOfvUq8
123k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfwTz/oMp50
124ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504
125B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDez
126eWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5
127aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0WicCAwEAAaOB
1283DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0PBAQD
129AgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6
130xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
131cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdv
132cmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJ
133KoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
134j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5R
135xNKWt9x+Tu5w/Rw56wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjT
136K3rMUUKhemPR5ruhxSvCNr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1
137n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHx
138REzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49O
139hgQ=
140-----END CERTIFICATE-----
141-----BEGIN CERTIFICATE-----
142MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJT
143RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
144UCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3Qw
145HhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJT
146RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
147UCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3Qw
148ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwze
149xODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY654eyNAbFvAWlA3yCyykQruGI
150gb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWroulpOj0O
151M3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1Lc
152sRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5
153mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG
1549rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0OBBYEFJWxtPCU
155tr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTADAQH/
156MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQsw
157CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk
158ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAx
159IENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0
160MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
161iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9
162tTEv2dB8Xfjea4MYeDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL
163/bscVjby/rK25Xa71SJlpz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlV
164g3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6
165tkD9xOQ14R0WHNC8K47Wcdk=
166-----END CERTIFICATE-----
167-----BEGIN CERTIFICATE-----
168MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJT
169RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
170UCBOZXR3b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAe
171Fw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNF
172MRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
173IE5ldHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIB
174IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+
175A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c
176+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1id9NEHif2
177P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKX
178C1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8R
179s3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9
180BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQWBBSBPjfYkrAf
181d59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zCB
182jgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkG
183A1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU
184cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENB
185IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmu
186G7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
187+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbj
188PGsye/Kf8Lb93/AoGEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bY
189GozH7ZxOmuASu7VqTITh4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6
190NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9HEufOX1362Kqx
191My3ZdvJOOjMMK7MtkAY=
192-----END CERTIFICATE-----
193-----BEGIN CERTIFICATE-----
194MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJT
195RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
196UCBOZXR3b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9v
197dDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYT
198AlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3Qg
199VFRQIE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBS
200b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoek
201n0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKk
202IhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3KP0q6p6z
203sLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1t
204UvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R
205+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvES
206a0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0GA1UdDgQWBBQ5
207lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw
208AwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkw
209ZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL
210ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVh
211bGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2Vh
212lRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
213GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx9
2145dr6h+sNNVJn0J6XdgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKF
215Yqa0p9m9N5xotS1WfbC3P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVA
216wRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQw
217dOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
218-----END CERTIFICATE-----
219-----BEGIN CERTIFICATE-----
220MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJV
221UzEcMBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1l
222cmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4X
223DTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMx
224HDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJp
225Y2EgT25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIw
226DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCa
227xlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CGv2BlnEtUiMJIxUo5vxTjWVXl
228GbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44zDyL9Hy7n
229BzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145Lcx
230VR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiE
231mf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCu
232JKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
233HQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Zo/Z5
2349m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA
235A4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF
236Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOM
237IOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTI
238dGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
239Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j
2408uB9Gr784N/Xx6dssPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
241-----END CERTIFICATE-----
242-----BEGIN CERTIFICATE-----
243MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJV
244UzEcMBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1l
245cmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4X
246DTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMx
247HDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJp
248Y2EgT25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIw
249DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssN
250t79Hc9PwVU3dxgz6sWYFas14tNwC206B89enfHG8dWOgXeMHDEjsJcQDIPT/
251DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8f3SkWq7x
252uhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE
25318aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxr
254kJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMD
255bi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8BPeraunzgWGcX
256uVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn6KVu
257Y8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9
258W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ
259o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48
260ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124Hhn
261AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
262aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNee
263MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypL
264M7PmG2tZTiLMubekJcmnxPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qf
265tIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjR
266Ywu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R
267+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr
268+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVM
269nNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMADjMSW7yV5TKQqLPGbIOt
270d+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh1NolNscI
271WC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZ
272ZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y
2733WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz
2742cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw
275RY8mkaKO/qk=
276-----END CERTIFICATE-----
277-----BEGIN CERTIFICATE-----
278MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQG
279EwJJRTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0
280MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUx
281MjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNV
282BAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZ
283QmFsdGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQAD
284ggEPADCCAQoCggEBAKMEuyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+h
285Xe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gR
286QKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/CG9VwcPCP
287wBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1
288pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNT
289Px8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkC
290AwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1BE3wMBIGA1Ud
291EwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUA
292A4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkT
293I7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
294jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/
295oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67
296G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
297RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
298-----END CERTIFICATE-----
299-----BEGIN CERTIFICATE-----
300MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQG
301EwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREw
302DwYDVQQLEwhEU1RDQSBFMTAeFw05ODEyMTAxODEwMjNaFw0xODEyMTAxODQw
303MjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy
304ZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEB
305AQUAA4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlR
306EmlvMVW5SXIACH7TpWJENySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+Lth
307zfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2io74CTADKAqjuAQIxZA9SLRN0
308dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBoBgNVHR8E
309YTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwg
310U2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNV
311BAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIx
312MDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFGp5fpFpRhgTCgJ3
313pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAMBgNV
314HRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3
315DQEBBQUAA4GBACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lN
316QseSJqBcNJo4cvj9axY+IO6CizEqkzaFI4iKPANo08kJD038bKTaKHKTDomA
317sH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4RbyhkwS7hp86W0N6
318w4pl
319-----END CERTIFICATE-----
320-----BEGIN CERTIFICATE-----
321MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGp
322MQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBM
323YWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENv
324LjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDEx
325ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDEx
326ODE4NTVaFw0wODExMjgxODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UE
327CBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0Rp
328Z2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDEx
329FjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0BCQEWEmNhQGRp
330Z3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
331ANLGJrbnpT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdfWvnTLnUv2Chi0ZMv/E3U
332q4flCMeZ55I/db3rJbQVwZsZPdJEjdd0IG03Ao9pk1uKxBmd9LIO/BZsubEF
333koPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGAvqPYUrBEzUNKcI5YhZXh
334TizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F5X5yP4Wd
335lGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMvOnNn
3367pTKBBMFYgZwI7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG
3379w0BAQUFAAOCAQEAojeyP2n714Z5VEkxlTMr89EJFEliYIalsBHiUMIdBlc+
338LegzZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2vAd5ZWRzfdd5ynvV
339WlHG4VMElo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX
3408ngvYzZAOONGDx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn8
3416Oawde3uPclwx12qgUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsT
342F7ANUkz+/m9c4pFuHf2kYtdo+o56T9II2pPc8JIRetDccpMMc5NihWjQ9A==
343-----END CERTIFICATE-----
344-----BEGIN CERTIFICATE-----
345MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQG
346EwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREw
347DwYDVQQLEwhEU1RDQSBFMjAeFw05ODEyMDkxOTE3MjZaFw0xODEyMDkxOTQ3
348MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy
349ZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEB
350AQUAA4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fB
351w18DW9Fvrn5C6mYjuGODVvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87e
352ZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JSxhcxEzu1TdvIxPbDDyQq2gyd
35355FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBoBgNVHR8E
354YTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwg
355U2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNV
356BAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIw
357OTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFB6CTShlgDzJQW6s
358NS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAMBgNV
359HRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3
360DQEBBQUAA4GBAEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHR
361xdf0CiUPPXiBng+xZ8SQTGPdXqfiup/1902lMXucKS1M/mQ+7LZT/uqb7YLb
362dHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1mPnHfxsb1gYgAlih
363w6ID
364-----END CERTIFICATE-----
365-----BEGIN CERTIFICATE-----
366MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGp
367MQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBM
368YWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENv
369LjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIx
370ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAy
371MjQ2MTZaFw0wODExMjcyMjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UE
372CBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0Rp
373Z2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDIx
374FjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0BCQEWEmNhQGRp
375Z3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
376ANx18IzAdZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbVp9oaBBg5kkp4o4HC9Xd6
377ULRw/5qrxsfKboNPQpj7Jgva3G3WqZlVUmfpKAOS3OWwBZoPFflrWXJW8vo5
378/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9kVySVGkl5WJp3OXuAFK9
379MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi3sOP17ih
380YqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+QVCv
381bK4iNC7Va26Dunm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG
3829w0BAQUFAAOCAQEAtTYOXeFhKFoRZcA/gwN5Tb4opgsHAlKFzfiR0BBstWog
383WxyQ2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT4EOvkTvRyyzYdFQ6
384HE3K1GjNI3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV
3856YyDfFk/xPEL553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8
386PzGn0EdzMzkbzE5q10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30
387sPDst2yC7S8xmUJMqbINuBVd8d+6ybVK1GSYsyapMMj9puyrliGtf8J4tg==
388-----END CERTIFICATE-----
389-----BEGIN CERTIFICATE-----
390MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UE
391ChMLRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NB
392X0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsT
393HChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1
394c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAy
395MDcxNjE2NDBaFw0yMDAyMDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0
396Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29y
397cC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAg
398RW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xp
399ZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
400A4GNADCBiQKBgQCTdLS25MVL1qFof2LV7PdRV7NySpj10InJrWPNTTVRaoTU
401rcloeW+46xHbh65cJFET8VQlhK8pK5/jgOLZy93GRUk0iJBeAZfv6lOm3fzB
4023ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKklWb1m9fkn5JVn1j+SgF7y
403NH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHdBgNVHR8E
404gdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUAw
405PgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSBy
406ZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0
407Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDbGllbnQgQ2Vy
408dGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
409IoAPMjAwMDAyMDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQD
410AgEGMB8GA1UdIwQYMBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQW
411BBSEi3T9xY3A/ydtIDdFfP4tzrrTfTAMBgNVHRMEBTADAQH/MB0GCSqGSIb2
412fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQFAAOBgQBObzWA
413O9GK9Q6nIMstZVXQkvTnhLUGJoMShAusO7JE7r3PQNsgDrpuFOow4DtifH+L
414a3xKp9U1PL6oXOpLu5OOgGarDyn9TS2/GpsKkMWr2tGzhtQvJFJcem3G8v7l
415TRowjJDyutdKPkN+1MhQGof4T4HHdguEOnKdzmVml64mXg==
416-----END CERTIFICATE-----
417-----BEGIN CERTIFICATE-----
418MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UE
419ChMLRW50cnVzdC5uZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xf
420Q1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
421KGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVz
422dC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
423Fw0wMDAyMDQxNzIwMDBaFw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtF
424bnRydXN0Lm5ldDE/MD0GA1UECxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMg
425aW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykg
426MjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5l
427dCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0G
428CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO8GCGD9JYf9Mzly0XonUw
429tZZkJi9ow0SrqHXmAGc0V55lxyKbc+bT3QgON1WqJUaBbL3+qPZ1V1eMkGxK
430wz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439PmrkDQYC2dWcTC5/oVzbI
431XQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4QgEBBAQD
432AgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoTC0Vu
433dHJ1c3QubmV0MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBp
434bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAy
435MDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0
436IFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNV
437BAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIw
438NDE3NTAwMFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc
439/vuLkpyw8m4iMB0GA1UdDgQWBBTLbMBr47s+y/winP77i5KcsPJuIjAMBgNV
440HRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkq
441hkiG9w0BAQQFAAOBgQBi24GRzsiad0Iv7L0no1MPUBvqTpLwqa+poLpIYcvv
442yQbvH9X07t9WLebKahlzqlO+krNQAraFJnJj2HVQYnUUt7NQGj/KEQALhUVp
443bbalrlHhStyCP2yMNLJ3a9kC9n8O6mUE8c1UyrrJzOCE98g+EZfTYAkYvAX/
444bIkz8OwVDw==
445-----END CERTIFICATE-----
446-----BEGIN CERTIFICATE-----
447MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UE
448ChMLRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNf
449MjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsT
450HChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1
451c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEy
452MjQxNzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0
453Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29y
454cC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkg
455RW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2Vy
456dGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEF
457AAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4
458QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/EC
459DNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuXMlBvPci6Zgzj
460/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzWnLLP
461KQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZd
462enoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
4634QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB
4640RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJ
465FrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
466AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFh
467fGPjK50xA3B20qMooPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVU
468KcgF7bISKo30Axv/55IQh7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaoho
469wXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2
470+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof888
4716ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
472-----END CERTIFICATE-----
473-----BEGIN CERTIFICATE-----
474MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UE
475BhMCVVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50
476cnVzdC5uZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBs
477aW1pdHMgbGlhYi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExp
478bWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0
479aW9uIEF1dGhvcml0eTAeFw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBa
480MIHJMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNV
481BAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5mby9DUFMgaW5jb3Jw
482LiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMpIDE5OTkgRW50
483cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50
484IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GL
485ADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo6oT9n3V5z8GKUZSv
486x1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux5zDeg7K6PvHV
487iTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zmAqTmT173
488iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSCARkw
489ggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50
490cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0Ff
491SW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UE
492CxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50
493cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYD
494VQQDEwRDUkwxMCygKqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9D
495bGllbnQxLmNybDArBgNVHRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkx
496MDEyMTkyNDMwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW
497/O5bs8qZdIuV6kwwHQYDVR0OBBYEFMT7nCl7l81MlvzuW7PKmXSLlepMMAwG
498A1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
499hvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7pFuPeJoSSJn59DXeDDYHAmsQ
500OokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzzwy5E97BnRqqS5TvaHBkU
501ODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/aEkP/TOYGJqibGapE
502PHayXOw=
503-----END CERTIFICATE-----
504-----BEGIN CERTIFICATE-----
505MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UE
506BhMCVVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50
507cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
508MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UE
509AxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1
510dGhvcml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQsw
511CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3
512dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlh
513Yi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVkMTow
514OAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
515b24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0
516VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHIN
517iC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3wkrYKZImZNHk
518mGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcwggHT
519MBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHY
520pIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
521BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChs
522aW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBM
523aW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
524cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNo
525dHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAi
526gA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMC
527AQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYE
528FPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9
529B0EABAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKn
530CqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2Zcgx
531xufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd2cNgQ4xYDiKWL2KjLB+6
532rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
533-----END CERTIFICATE-----
534-----BEGIN CERTIFICATE-----
535MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQG
536EwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1
537cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4
538MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgx
539LTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0
540eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2R
541FGiYCh7+2gRvE4RiIcPRfM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO
542/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuv
543K9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAGA1UdHwRp
544MGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEt
545MCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
546MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjAL
547BgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gjIBBPM5iQn9Qw
548HQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMBAf8w
549GgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GB
550AFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
5517qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2u
552FHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
553-----END CERTIFICATE-----
554-----BEGIN CERTIFICATE-----
555MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJV
556UzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1
557aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0
558MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoT
559E0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJl
560IEdsb2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
561gYkCgYEAuucXkAJlsTRVPEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQy
562td4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORR
563OhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxnhcXIw2EC
564AwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8w
565HwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6o
566oHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf
5672rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkAZ70Br83gcfxa
568z2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIYNMR1
569pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
570-----END CERTIFICATE-----
571-----BEGIN CERTIFICATE-----
572MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJV
573UzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1
574aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcN
575MjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZh
576eCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2lu
577ZXNzIENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fe
578k6lfWg0XTzQaDJj0ItlZ1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5
579/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4aIZX5UkxVWsUPOE9G+m34LjXW
580HXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBkMBEGCWCG
581SAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4
582MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBq
583R3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnm
584JXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+WB5Hh1Q+WKG1
585tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+KpYr
586tWKmpj29f5JZzVoqgrI3eQ==
587-----END CERTIFICATE-----
588-----BEGIN CERTIFICATE-----
589MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQG
590EwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlm
591YXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5
592MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXgg
593U2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0Et
594MjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF
5957Y6yEb3+6+e0dMKP/wXn2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKD
596pkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HM
597HMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAGA1UdHwRp
598MGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBT
599ZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
600MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjAL
601BgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBqy/3YIHqngnYw
602HQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMBAf8w
603GgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GB
604AAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy
6050cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkt
606y3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN
607-----END CERTIFICATE-----
608-----BEGIN CERTIFICATE-----
609MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgw
610FgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRy
611dXN0IFNvbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3Qg
612R2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1
613MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYD
614VQQLEx5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMT
615GkdURSBDeWJlclRydXN0IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUA
616A4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4usJTQGz0O9pTAipTHBsiQl8i4
617ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcqlHHK6XALn
618ZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8F
619LztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh3
62046B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq
62181yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0PlZPvy5TYnh+d
622XIVtx6quTx8itc2VrbqnzPmrC3p/
623-----END CERTIFICATE-----
624-----BEGIN CERTIFICATE-----
625MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgw
626FgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRy
627dXN0IFJvb3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQsw
628CQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQD
629ExNHVEUgQ3liZXJUcnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
630iQKBgQC45k+625h8cXyvRLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8K
631DPufpz+iCWaEVh43KRuH6X4MypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPw
632KfWVWgkWYXcKIiXUT0Wqx73llt/51KiOQswkwB6RJ0q1bQaAYznEol44AwID
633AQABMA0GCSqGSIb3DQEBBAUAA4GBABKzdcZfHeFhVYAA1IFLezEPI2PnPfMD
634+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWlIjeaY8JIILTbcuPI9tl8vrGv
635U9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9ApybW1EDp3zdHSo1TRJ6V6e
6366bR64eVaH4QwnNOfpSXY
637-----END CERTIFICATE-----
638-----BEGIN CERTIFICATE-----
639MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYT
640AlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVz
641dCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBC
642MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UE
643AxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
644MIIBCgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEH
645CIjaWC9mOSm9BXiLnTjoBbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlC
646GDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet8u5fa9IAjbkU+BQVNdnARqN7
647csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+VcT4wt/lAj
648Nvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdRe
649JivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQAB
650o1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9
651qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1luMrMTjANBgkq
652hkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Qzxpe
653R+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWV
654Yrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
655PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot
6562/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeX
657xx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
658Mw==
659-----END CERTIFICATE-----
660-----BEGIN CERTIFICATE-----
661MIIDdTCCAl2gAwIBAgILAgAAAAAA1ni3lAUwDQYJKoZIhvcNAQEEBQAwVzEL
662MAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV
663BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05
664ODA5MDExMjAwMDBaFw0xNDAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkw
665FwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRsw
666GQYDVQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUA
667A4IBDwAwggEKAoIBAQDaDuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR
6684mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc
66971DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4
670bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgK
671OOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMW
672ea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DP
673AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIABjAdBgNVHQ4EFgQUYHtmGkUNl8qJ
674UC99BM00qP/8/UswDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOC
675AQEArqqf/LfSyx9fOSkoGJ40yWxPbxrwZKJwSk8ThptgKJ7ogUmYfQq75bCd
676PTbbjwVR/wkxKh/diXeeDy5slQTthsu0AD+EAk2AaioteAuubyuig0SDH81Q
677gkwkr733pbTIWg/050deSY43lv6aiAU62cDbKYfmGZZHpzqmjIs8d/5GY6dT
6782iHRrH5Jokvmw2dZL7OKDrssvamqQnw1wdh/1acxOk5jQzmvCLBhNIzTmKlD
679NPYPhyk7ncJWWJh3w/cbrPad+D6qp1RF8PX51TFl/mtYnHGzHtdS6jIX/EBg
680Hcl5JLL2bP2oZg6C3ZjL2sJETy6ge/L3ayx2EYRGinij4w==
681-----END CERTIFICATE-----
682-----BEGIN CERTIFICATE-----
683MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlD
684ZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
685Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRp
686b24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNv
687bS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYy
688NjAwMjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
689IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4x
690NTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24g
691QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x
692IDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3
693DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2f
694NUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChM
695MFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqYJJgpp0lZpd34
696t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs3x/b
697e0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0Wu
698PIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
699PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
700-----END CERTIFICATE-----
701-----BEGIN CERTIFICATE-----
702MIICXDCCAcWgAwIBAgIQCgEBAQAAAnwAAAALAAAAAjANBgkqhkiG9w0BAQUF
703ADA6MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0Eg
704U2VjdXJpdHkgMTAyNCBWMzAeFw0wMTAyMjIyMTAxNDlaFw0yNjAyMjIyMDAx
705NDlaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJT
706QSBTZWN1cml0eSAxMDI0IFYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
707gQDV3f5mCc8kPD6ugU5OisRpgFtZO9+5TUzKtS3DJy08rwBCbbwoppbPf9dY
708rIMKo1W1exeQFYRMiu4mmdxY78c4pqqv0I5CyGLXq6yp+0p9v+r+Ek3d/yYt
709bzZUaMjShFbuklNhCbM/OZuoyZu9zp9+1BlqFikYvtc6adwlWzMaUQIDAQAB
710o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSME
711GDAWgBTEwBykB5T9zU0B1FTapQxf3q4FWjAdBgNVHQ4EFgQUxMAcpAeU/c1N
712AdRU2qUMX96uBVowDQYJKoZIhvcNAQEFBQADgYEAPy1q4yZDlX2Jl2X7deRy
713HUZXxGFraZ8SmyzVWujAovBDleMf6XbN3Ou8k6BlCsdNT1+nr6JGFLkM88y9
714am63nd4lQtBU/55oc2PcJOsiv6hy8l4A4Q1OOkNumU4/iXgDmMrzVcydro7B
715qkWY+o8aoI2II/EVQQ2lRj6RP4vr93E=
716-----END CERTIFICATE-----
717-----BEGIN CERTIFICATE-----
718MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUF
719ADA6MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0Eg
720U2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5
721MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJT
722QSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
723CgKCAQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37
724RqtBaB4Y6lXIL5F4iSj7Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E
7250S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J
7266elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iHKrtjEAMq
727s6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzD
728uvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2Mw
729YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAW
730gBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NRMKSq6UWuNST6
731/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmYv/3V
732EhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5g
733EydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+
734f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJq
735aHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEk
736llgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
737pKnXwiJPZ9d37CAFYd4=
738-----END CERTIFICATE-----
739-----BEGIN CERTIFICATE-----
740MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYT
741AkRFMRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYD
742VQQKEzFUQyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3
743b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAyIENB
744MSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAe
745Fw05ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJE
746RTEQMA4GA1UECBMHSGFtYnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UE
747ChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3VyaXR5IGluIERhdGEgTmV0d29y
748a3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTEp
749MCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8w
750DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmk
751qYov1YtcaF9QxmL1Zr3KkSLsqh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJO
752gtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5Nu6hLVxa8/vhYnvgpjbB7
753zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMBAf8w
754DgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRy
755dXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
756CSqGSIb3DQEBBAUAA4GBAIRS+yjf/x91AbwBvgRWl2p0QiQxg/lGsQaKic+W
757LDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ29ELw+HkuCkhcq8xR
758T3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac
759ASZ4smZHcFFk
760-----END CERTIFICATE-----
761-----BEGIN CERTIFICATE-----
762MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYT
763AkRFMRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYD
764VQQKEzFUQyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3
765b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAzIENB
766MSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAe
767Fw05ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJE
768RTEQMA4GA1UECBMHSGFtYnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UE
769ChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3VyaXR5IGluIERhdGEgTmV0d29y
770a3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTEp
771MCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8w
772DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQ
773GwfeLud2zODa/ISoXoxjaitN2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYn
774v68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+77uMMfTDWw1Krj10nnGvA
775o+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMBAf8w
776DgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRy
777dXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
778CSqGSIb3DQEBBAUAA4GBABY9xs3Bu4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4
779iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm5gZOngylerpuw3yC
780GdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS
781CdS7kjXvD9s0
782-----END CERTIFICATE-----
783-----BEGIN CERTIFICATE-----
784MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMC
785WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
786MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
787aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBl
788cnNvbmFsIEJhc2ljIENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNp
789Y0B0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVow
790gcsxCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNV
791BAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAm
792BgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNV
793BAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBDQTEoMCYGCSqGSIb3DQEJARYZ
794cGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOB
795jQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53dXLdjUmbllegeNTK
796P1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdKwPQIcOk8RHtQ
797fmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7G1sY0b8j
798kyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOB
799gQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7
800c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95
801B21P9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ==
802-----END CERTIFICATE-----
803-----BEGIN CERTIFICATE-----
804MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMC
805WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
806MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
807aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBl
808cnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1m
809cmVlbWFpbEB0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIz
810NTk1OVowgdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUx
811EjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRp
812bmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
813JDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqG
814SIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTCBnzANBgkq
815hkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfYDFG26nKRsIRefS0N
816j3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5ErHzmj+hND3Ef
817QDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVquzgkCGqY
818x7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
819hkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP
820MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgC
821neSa/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr
8225PjRzneigQ==
823-----END CERTIFICATE-----
824-----BEGIN CERTIFICATE-----
825MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMC
826WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
827MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
828aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBl
829cnNvbmFsIFByZW1pdW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXBy
830ZW1pdW1AdGhhd3RlLmNvbTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5
831NTlaMIHPMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIw
832EAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5n
833MSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSMw
834IQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJlbWl1bSBDQTEqMCgGCSqGSIb3
835DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUuY29tMIGfMA0GCSqGSIb3
836DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0VsBd/eJxZRNkERbGw7
8377f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWIEt12TfIa/G8j
838Hnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYDZicRFTuq
839W/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
840DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH
841b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVx
842eTBhKXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1
843KzGJ
844-----END CERTIFICATE-----
845-----BEGIN CERTIFICATE-----
846MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMC
847WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
848MR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2Vy
849dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3Rl
850IFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
851cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1
852OVowgc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQ
853BgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcg
854Y2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
855ITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3
856DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0B
857AQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhI
858NTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPL
859lyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/qgeN
8609EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
861AQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
862hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZ
863a4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcU
864Qg==
865-----END CERTIFICATE-----
866-----BEGIN CERTIFICATE-----
867MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMC
868WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
869MR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2Vy
870dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3Rl
871IFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
872ZS5jb20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkG
873A1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2Fw
874ZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
875CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQ
876VGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRz
877QHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I
878/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC
8796VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCXL+eQbcAoQpnX
880TEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzARMA8G
881A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWD
882TSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
883QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdni
884TCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
885-----END CERTIFICATE-----
886-----BEGIN CERTIFICATE-----
887MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMC
888WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmls
889bGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmlj
890YXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcw
891MTAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTAT
892BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN
893BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24x
894HzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcN
895AQEBBQADgY0AMIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+oJ9O0yeB8
896WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR
8975zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7
898X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN
899AQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC9RAIDb/LogWK
9000E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQpgCed/r8
901zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZCayJ
902SdM=
903-----END CERTIFICATE-----
904-----BEGIN CERTIFICATE-----
905MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUF
906ADCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0
907IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEw
908HwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVU
909Ti1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0
910ODM5WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgT
911AlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVT
912RVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVz
913dC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNh
914dGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZV
915hawGNFugmliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAb
916GHNhSuh+zdMvZOOmfAz6F4CjDUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZ
917NaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXuOzr0hAReYFmnjDRy7rh4
918xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwiP8vv
919/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7i
920gEL66S/ozjIEj3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQD
921AgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFPqGydvguul49Uuo1hXf
9228NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9jcmwudXNlcnRydXN0
923LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
924CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXh
925i6r/fWRRzwr/vH3YIWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUq
926f9FuVSTiuwL7MT++6LzsQCv4AdRWOOTKRIK1YSAhZ2X28AvnNPilwpyjXEAf
927hZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4QpxFq9ZFdyrTvP
928NximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+
929FTAqDbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjis
930H8SE
931-----END CERTIFICATE-----
932-----BEGIN CERTIFICATE-----
933MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlD
934ZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
935Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRp
936b24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNv
937bS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYy
938NTIyMjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
939IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4x
940NTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24g
941QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x
942IDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3
943DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw
9448068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m
945+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8YTfwggtFzVXSN
946dnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwGlN+V
947YH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8so
948gTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw
949nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI
950-----END CERTIFICATE-----
951-----BEGIN CERTIFICATE-----
952MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlD
953ZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
954Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRp
955b24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNv
956bS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYy
957NjAwMTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
958IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4x
959NTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g
960QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x
961IDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3
962DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc
96365g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQ
964b7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QSv4dk+NoS/zcn
965wbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZSWI4
966OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZ
967oDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC
968W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd
969-----END CERTIFICATE-----
970-----BEGIN CERTIFICATE-----
971MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8x
972CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UE
973CxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
974cml0eTAeFw05NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNV
975BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh
976c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCB
977nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3
978noaACpEO+jglr0aIguVzqKCbJF0NH8xlbgyw0FaEGIeaBpsQoXPftFg5a27B
9799hXVqKg/qhIGjTGsf7A01480Z4gJzRQR4k5FVmkfeAKA2txHkSm7NsljXMXg
9801y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATANBgkqhkiG9w0BAQIFAAOBgQBM
981P7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZoEWx8QszznC7EBz8UsA9P
982/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5FvjqBUuUfx3CHMjj
983t/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89FxlA==
984-----END CERTIFICATE-----
985-----BEGIN CERTIFICATE-----
986MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcEx
987CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UE
988CxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
989cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAt
990IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBU
991cnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
992gcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoG
993A1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1
994dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5j
995LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2ln
996biBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq
9970Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9
998Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSmFc/IReumXY6c
999PvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQABMA0G
1000CSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9Zr
1001bWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul
1002uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4i
1003P/68DzFc6PLZ
1004-----END CERTIFICATE-----
1005-----BEGIN CERTIFICATE-----
1006MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHK
1007MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV
1008BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5
1009IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBD
1010BgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlm
1011aWNhdGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3
1012MTYyMzU5NTlaMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24s
1013IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
1014BAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQg
1015dXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFBy
1016aW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
1017hvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRR
1018ZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO8ESlV8dAWB6j
1019Rx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJrKsh
1020JlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7P
1021oBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2
10226KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHh
1023v2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQ
1024BfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
1025y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUf
1026xJM8/XmPBNQ+T+r3ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFM
1027DSZl4kSAHsef493oCtrspSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5
1028SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXV
1029OBRgmaNL3gaWcSzy27YfpO8/7g==
1030-----END CERTIFICATE-----
1031-----BEGIN CERTIFICATE-----
1032MIIDnjCCAwegAwIBAgIQK2jUo0aexTsoCas4XX8nIDANBgkqhkiG9w0BAQUF
1033ADBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1
1034BgNVBAsTLkNsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
1035dXRob3JpdHkwHhcNMDAwODA0MDAwMDAwWhcNMDQwODAzMjM1OTU5WjCBpzEX
1036MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
1037dXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
1038L3d3dy52ZXJpc2lnbi5jb20vUlBBIChjKTAwMS4wLAYDVQQDEyVDbGFzcyAx
1039IFB1YmxpYyBQcmltYXJ5IE9DU1AgUmVzcG9uZGVyMIGfMA0GCSqGSIb3DQEB
1040AQUAA4GNADCBiQKBgQC57V56Ondfzl86UvzNZPdxtW9qlsZZklWUXS9bLsER
10416iaKy6eBPPZaRN56Ey/9WlHZezcmSsAnPwQDalbBgyzhb1upVFAkSsYuekyh
1042WzdUJCExH6F4GHansXDaItBq/gdiQMb39pt9DAa4S8co5GYjhFHvRreT2IEz
1043y+U2rMboBQIDAQABo4IBEDCCAQwwIAYDVR0RBBkwF6QVMBMxETAPBgNVBAMT
1044CE9DU1AgMS0xMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwudmVyaXNp
1045Z24uY29tL3BjYTEuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEIGCCsGAQUF
1046BwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRwOi8vb2NzcC52ZXJpc2lnbi5j
1047b20vb2NzcC9zdGF0dXMwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcBATAqMCgG
1048CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vUlBBMAkGA1Ud
1049EwQCMAAwCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBBQUAA4GBAHCQ3bjkvlMX
1050fH8C6dX3i5mTMWCNfuZgayTvYKzSzpHegG0JpNO4OOVEynJeDS3Bd5y9LAN4
1051KY2kpXeH9fErJq3MB2w6VFoo4AnzTQoEytRYaQuns/XdAaXn3PAfusFdkI2z
10526k/BEVmXarIrE7HarZehs7GgIFvKMquNzxPwHynD
1053-----END CERTIFICATE-----
1054-----BEGIN CERTIFICATE-----
1055MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzEL
1056MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQL
1057Ey5DbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
1058aXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UE
1059BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
1060cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGf
1061MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZM
1062JaLtVRKXxaeAufqDwSCg+i8VDXyhYGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvE
1063erf4Zh+AVPy3wo5ZShRXRtGak75BkQO7FYCTXOvnzAhsPz6zSvz/S2wj1VCC
1064JkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBAIob
1065K/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxgJ8pFUs4W7z8GZOeUaHxg
1066MxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Ncr6Pc5iaAIzy4RHT3
1067Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY
1068-----END CERTIFICATE-----
1069-----BEGIN CERTIFICATE-----
1070MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHB
1071MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNV
1072BAsTM0NsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRo
1073b3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4g
1074LSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24g
1075VHJ1c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTla
1076MIHBMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6
1077BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
1078dXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIElu
1079Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNp
1080Z24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
1081p4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkf
1082rbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjwDqL7MWzJ5m+Z
1083Jwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEAATAN
1084BgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/
10857aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX
1086rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6x
1087RnInjBJ7xUS0rg==
1088-----END CERTIFICATE-----
1089-----BEGIN CERTIFICATE-----
1090MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcox
1091CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UE
1092CxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkg
1093VmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMG
1094A1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZp
1095Y2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcx
1096NjIzNTk1OVowgcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwg
1097SW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UE
1098CxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1
1099c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJp
1100bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG
11019w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY8
11021nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDOJxOeBUebMXoT
11032B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7C9UT
1104AJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQ
1105HgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN
1106qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVC
1107YQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekh
1108ktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
11090xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydE
1110p85EXdQbkJgNHkKUsQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377B
1111MnMiIYtYgXsVkXq642RIsH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab
11125iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//jGHyJizNdrDPX
1113p/naOlXJWBD5qu9ats9LS98q
1114-----END CERTIFICATE-----
1115-----BEGIN CERTIFICATE-----
1116MIIDnjCCAwegAwIBAgIQCUYX5h3Y1BygDKBi6HmKpzANBgkqhkiG9w0BAQUF
1117ADBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1
1118BgNVBAsTLkNsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
1119dXRob3JpdHkwHhcNMDAwODAxMDAwMDAwWhcNMDQwNzMxMjM1OTU5WjCBpzEX
1120MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
1121dXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
1122L3d3dy52ZXJpc2lnbi5jb20vUlBBIChjKTAwMS4wLAYDVQQDEyVDbGFzcyAy
1123IFB1YmxpYyBQcmltYXJ5IE9DU1AgUmVzcG9uZGVyMIGfMA0GCSqGSIb3DQEB
1124AQUAA4GNADCBiQKBgQDQymMxYX9ENHwFfQs9apDLeUt3Cj9LxyPlwGItfpx+
1125PoiHkdCs6E1Jh6KWkIrdBKUCP4yb6Yn+YqDiWr3I3bR45qVCkwhnAcAgTddc
11269F3as+M3plIaLExlTYqH2aij8UlUuzxcgFFoxvtJ/wtVqxXd+5rBuR10DbKM
1127RF2J/J/5gwIDAQABo4IBEDCCAQwwIAYDVR0RBBkwF6QVMBMxETAPBgNVBAMT
1128CE9DU1AgMS0yMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwudmVyaXNp
1129Z24uY29tL3BjYTIuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEIGCCsGAQUF
1130BwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRwOi8vb2NzcC52ZXJpc2lnbi5j
1131b20vb2NzcC9zdGF0dXMwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcBATAqMCgG
1132CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vUlBBMAkGA1Ud
1133EwQCMAAwCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBBQUAA4GBAB99CW4kRnUE
1134nPMmm+M5bhfvvL2iG9IChIar0ECXLMRDiDcZayKoA3FQnSDcNmAgmnMtc1Vs
1135WJsswrQ0LHozQsqR2elDr88e4PXEeqs/cmMeqTfhWzuIsxOGgpBXy1f/9Fa+
1136It3jl6jhvCJDwt1N2/aBnpIUnjkPE1TegtjAXjSN
1137-----END CERTIFICATE-----
1138-----BEGIN CERTIFICATE-----
1139MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzEL
1140MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQL
1141Ey5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
1142aXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UE
1143BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
1144cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGf
1145MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69q
1146RUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94f56TuZoAqiN91qyFomNFx3In
1147zPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Olhec9vn2a
1148/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtM
1149EivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPw
1150TtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzk
1151uxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
1152-----END CERTIFICATE-----
1153-----BEGIN CERTIFICATE-----
1154MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcEx
1155CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UE
1156CxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
1157cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAt
1158IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBU
1159cnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
1160gcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoG
1161A1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1
1162dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5j
1163LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2ln
1164biBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM
1165XtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXX
1166wc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg013gfqLptQ5GV
1167j0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQABMA0G
1168CSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01U
1169bSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
1170F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo
11711KpYoJ2daZH9
1172-----END CERTIFICATE-----
1173-----BEGIN CERTIFICATE-----
1174MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHK
1175MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV
1176BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5
1177IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBD
1178BgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlm
1179aWNhdGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3
1180MTYyMzU5NTlaMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24s
1181IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
1182BAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQg
1183dXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFBy
1184aW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
1185hvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2
1186R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2tKmFZpGcmTNDo
1187vFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUccLwg
1188TS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+V
1189k7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ
1190Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJ
1191OxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my
1192/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
1193j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoA
1194Wii/gt/4uhMdUIaC/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8S
1195GhJouPtmmRQURVyu565pF4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbb
1196o27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh
1197/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
1198-----END CERTIFICATE-----
1199-----BEGIN CERTIFICATE-----
1200MIIDojCCAwugAwIBAgIQLpaev7ZibOx76XPM42zBhDANBgkqhkiG9w0BAQUF
1201ADBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1
1202BgNVBAsTLkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
1203dXRob3JpdHkwHhcNMDAwODA0MDAwMDAwWhcNMDQwODAzMjM1OTU5WjCBpzEX
1204MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
1205dXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
1206L3d3dy52ZXJpc2lnbi5jb20vUlBBIChjKTAwMS4wLAYDVQQDEyVDbGFzcyAz
1207IFB1YmxpYyBQcmltYXJ5IE9DU1AgUmVzcG9uZGVyMIGfMA0GCSqGSIb3DQEB
1208AQUAA4GNADCBiQKBgQDx5AgOg7t140jluNum8Lmr6Txix141W9ACVBHYydFW
1209uXZLuat65s269gwE1n7WsAplrE454/H3LaMlOe+wi8++2wxdbnD0B81w9zrA
1210PjUW7XiMQ8/CJi5H1oZ9nPG+1mcMIiWkymXmH3p4KC8/BdsEIb/hRWb+PLeC
12117Vq4FhW5VQIDAQABo4IBFDCCARAwIAYDVR0RBBkwF6QVMBMxETAPBgNVBAMT
1212CE9DU1AgMS0zMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9jcmwudmVyaXNp
1213Z24uY29tL3BjYTMuMS4xLmNybDATBgNVHSUEDDAKBggrBgEFBQcDCTBCBggr
1214BgEFBQcBAQQ2MDQwMgYIKwYBBQUHMAGmJhYkaHR0cDovL29jc3AudmVyaXNp
1215Z24uY29tL29jc3Avc3RhdHVzMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw
1216KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL1JQQTAJ
1217BgNVHRMEAjAAMAsGA1UdDwQEAwIHgDANBgkqhkiG9w0BAQUFAAOBgQAC9lNj
1218wKke8tCLMzCPSJtMsFa0g3FKvtxQ2PW24AvbvXhP6c8JNNopSZ0Bc1qRkYJU
1219LBMK03cjzzf8Y96n4/a3tWlFKEnDkdyqRxypiJksBSqNjYr6YuJatwAgXTnE
1220KMLL/J6oia5bPY4S6jKy/OsU1wkVGsDNG9W1FU5B1ZbjTg==
1221-----END CERTIFICATE-----
1222-----BEGIN CERTIFICATE-----
1223MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcEx
1224CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UE
1225CxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
1226cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAt
1227IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBU
1228cnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
1229gcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoG
1230A1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1
1231dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5j
1232LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2ln
1233biBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6
12348OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTK
1235QWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtKqsGgtG7rL+VX
1236xbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQABMA0G
1237CSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGI
1238L4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y
1239cyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckzt
1240ImRPT8qAkbYp
1241-----END CERTIFICATE-----
1242-----BEGIN CERTIFICATE-----
1243MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHK
1244MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV
1245BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5
1246IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBD
1247BgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlm
1248aWNhdGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3
1249MTYyMzU5NTlaMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24s
1250IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
1251BAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQg
1252dXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFBy
1253aW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
1254hvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYl
1255S+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ+mGuqPKljYXC
1256KtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM8BDc
1257VHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdL
1258MEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY
1259ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDD
1260Zq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1Wr
1261IhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
1262mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csK
1263vE+MW8VLADsfKoKmfjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluP
1264QSjA1egtTaRezarZ7c7c2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kP
1265mF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr
12669Xgn2uf3ZkPznoM+IKrDNWCRzg==
1267-----END CERTIFICATE-----
1268-----BEGIN CERTIFICATE-----
1269MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzEL
1270MAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMu
1271MS4wLAYDVQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9y
1272aXR5MB4XDTk0MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UE
1273BhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD
1274VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGb
1275MA0GCSqGSIb3DQEBAQUAA4GJADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6O
1276LDfO6zV4ZFQD5YRAUcm/jwjiioII0haGN1XpsSECrXZogZoFokvJSyVmIlZs
1277iAeP94FZbYQHZXATcXY+m3dM41CJVphIuR2nKRoTLkoRWZweFdVJVCxzOmmC
1278sZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZIhvcNAQECBQADfgBl3X7hsuyw
12794jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3YQO2WxZpO8ZECAyIUwxr
1280l0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc1/p3yjkWWW8O6tO1
1281g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
1282-----END CERTIFICATE-----
1283-----BEGIN CERTIFICATE-----
1284MIIDnzCCAwygAwIBAgIRAP9F1SddJPuzwjkkU1fhT94wDQYJKoZIhvcNAQEF
1285BQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5
1286LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24g
1287QXV0aG9yaXR5MB4XDTAwMDgwNDAwMDAwMFoXDTA0MDgwMzIzNTk1OVowgZ4x
1288FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
1289cnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6
1290Ly93d3cudmVyaXNpZ24uY29tL1JQQSAoYykwMDElMCMGA1UEAxMcU2VjdXJl
1291IFNlcnZlciBPQ1NQIFJlc3BvbmRlcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
1292gYkCgYEAuFGZZIUO7rMKaPC/Y3YdU/X8oXiMM+6f9L452psPTUepjyDoS0S9
1293zs17kNEw6JDEJXuJKN699pMd/7n/krWpjeSuzOLDB4Nqo3IQASdiIqY1Jjkt
1294ns9gDPxHpNfQQninHWzQy08VpykKtJVFxLHnWgnXOZXYHTWewr2zXcEMSx8C
1295AwEAAaOCAR0wggEZMCAGA1UdEQQZMBekFTATMREwDwYDVQQDEwhPQ1NQIDEt
1296NDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vY3JsLnZlcmlzaWduLmNvbS9S
1297U0FTZWN1cmVTZXJ2ZXItcC5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwkwQgYI
1298KwYBBQUHAQEENjA0MDIGCCsGAQUFBzABpiYWJGh0dHA6Ly9vY3NwLnZlcmlz
1299aWduLmNvbS9vY3NwL3N0YXR1czBEBgNVHSAEPTA7MDkGC2CGSAGG+EUBBwEB
1300MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9SUEEw
1301CQYDVR0TBAIwADALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQEFBQADfgAAsxBT
1302ZpxJky4xoAJC0lhXfmah/huKYRhQQCweK0Gl1tv/rAgcWgVtAlwqtpZPR9u+
1303TtvOzLqGuBjOsRKRX2P380g+zPFNE+RtCZR4AJLLoyCdBgtqoEMHztEZbI8Y
1304dZqfFzP9qSa44+LewqjEWop/mNYHBmvMVp6GcM7U7w==
1305-----END CERTIFICATE-----
1306-----BEGIN CERTIFICATE-----
1307MIIDzTCCAzagAwIBAgIQU2GyYK7bcY6nlLMTM/QHCTANBgkqhkiG9w0BAQUF
1308ADCBwTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTww
1309OgYDVQQLEzNDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24g
1310QXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJ
1311bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlT
1312aWduIFRydXN0IE5ldHdvcmswHhcNMDAwOTI2MDAwMDAwWhcNMTAwOTI1MjM1
1313OTU5WjCBpTEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
1314cmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBh
1315dCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAwMSwwKgYDVQQD
1316EyNWZXJpU2lnbiBUaW1lIFN0YW1waW5nIEF1dGhvcml0eSBDQTCBnzANBgkq
1317hkiG9w0BAQEFAAOBjQAwgYkCgYEA0hmdZ8IAIVlizrQJIkRpivglWtvtDbc2
1318fk7gu5Q+kCWHwmFHKdm9VLhjzCx9abQzNvQ3B5rB3UBU/OB4naCTuQk9I1F/
1319RMIUdNsKvsvJMDRAmD7Q1yUQgZS9B0+c1lQn3y6ov8uQjI11S7zi6ESHzeZB
1320CiVu6PQkAsVSD27smHUCAwEAAaOB3zCB3DAPBgNVHRMECDAGAQH/AgEAMEUG
1321A1UdIAQ+MDwwOgYMYIZIAYb4RQEHFwEDMCowKAYIKwYBBQUHAgEWHGh0dHBz
1322Oi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0
1323cDovL2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwCwYDVR0PBAQDAgEGMEIG
1324CCsGAQUFBwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRwOi8vb2NzcC52ZXJp
1325c2lnbi5jb20vb2NzcC9zdGF0dXMwDQYJKoZIhvcNAQEFBQADgYEAgnBold+2
1326DcIBcBlK0lRWHqzyRUyHuPU163hLBanInTsZIS5wNEqi9YngFXVF5yg3ADQn
1327Keg3S/LvRJdrF1Eaw1adPBqK9kpGRjeM+sv1ZFo4aC4cw+9wzrhGBha/937n
1328tag+RaypJXUie28/sJyU58dzq6wf7iWbwBbtt8pb8BQ=
1329-----END CERTIFICATE-----
1330-----BEGIN CERTIFICATE-----
1331MIIDgDCCAmigAwIBAgICAx4wDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMC
1332VVMxDTALBgNVBAoTBFZJU0ExLzAtBgNVBAsTJlZpc2EgSW50ZXJuYXRpb25h
1333bCBTZXJ2aWNlIEFzc29jaWF0aW9uMRIwEAYDVQQDEwlHUCBSb290IDIwHhcN
1334MDAwODE2MjI1MTAwWhcNMjAwODE1MjM1OTAwWjBhMQswCQYDVQQGEwJVUzEN
1335MAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNl
1336cnZpY2UgQXNzb2NpYXRpb24xEjAQBgNVBAMTCUdQIFJvb3QgMjCCASIwDQYJ
1337KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkBcLWqxEDwq2omYXkZAPy/mzdZ
1338DK9vZBv42pWUJGkzEXDK41Z0ohdXZFwgBuHW73G3O/erwWnQSaSxBNf0V2KJ
1339XLB1LRckaeNCYOTudNargFbYiCjh+20i/SN8RnNPflRzHqgsVVh1t0zzWkWl
1340Ahr62p3DRcMiXvOL8WAp0sdftAw6UYPvMPjU58fy+pmjIlC++QU3o63tmsPm
13417IgbthknGziLgE3sucfFicv8GjLtI/C1AVj59o/ghalMCXI5Etuz9c9OYmTa
1342xhkVOmMd6RdVoUwiPDQyRvhlV7or7zaMavrZ2UT0qt2E1w0cslSsMoW0ZA3e
1343QbuxNMYBhjJk1Z8CAwEAAaNCMEAwHQYDVR0OBBYEFJ59SzS/ca3CBfYDdYDO
1344qU8axCRMMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqG
1345SIb3DQEBBQUAA4IBAQAhpXYUVfmtJ3CPPPTVbMjMCqujmAuKBiPFyWHbmQdp
1346NSYx/scuhMKZYdQN6X0uEyt8joW2hcdLzzW2LEc9zikv2G+fiRxkk78IvXbQ
1347kIqUs38oW26sTTMs7WXcFsziza6kPWKSBpUmv9+55CCmc2rBvveURNZNbyoL
1348axhNdBA2aGpawWqn3TYpjLgwi08hPwAuVDAHOrqK5MOeyti12HvOdUVmB/Rt
1349Ldh6yumJivIj2C/LbgA2T/vwLwHMD8AiZfSr4k5hLQOCfZEWtTDVFN5ex5D8
1350ofyrEK9ca3CnB+8phuiyJccg/ybdd+95RBTEvd07xQObdyPsoOy7Wjm1zK0G
1351-----END CERTIFICATE-----
1352-----BEGIN CERTIFICATE-----
1353MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUF
1354ADBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlz
1355YSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMT
1356E1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0
1357MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UE
1358CxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAa
1359BgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA
1360A4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh
136128JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8bRaVK7362
1362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81
1363q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtF
1364Wsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0
1365lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaLdXe6YJ2E5/4t
1366AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
1367A1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOC
1368AQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR
1369zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKht
1370cbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGI
1371xHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
1372YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/
1373hC3euiInlhBx6yLt398znM/jra6O1I7mT1GvFpLgXPYHDw==
1374-----END CERTIFICATE-----
1375-----BEGIN CERTIFICATE-----
1376MIIFajCCBFKgAwIBAgIEPLU9RjANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQK
1377EwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEG
1378A1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0EtQmFsdGltb3JlIEltcGxlbWVudGF0
1379aW9uMB4XDTAyMDQxMTA3Mzg1MVoXDTIyMDQxMTA3Mzg1MVowZjESMBAGA1UE
1380ChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAx
1381BgNVBAMTKmJlVFJVU1RlZCBSb290IENBLUJhbHRpbW9yZSBJbXBsZW1lbnRh
1382dGlvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALx+xDmcjOPW
1383HIb/ymKt4H8wRXqOGrO4x/nRNv8i805qX4QQ+2aBw5R5MdKR4XeOGCrDFN5R
13849U+jK7wYFuK13XneIviCfsuBH/0nLI/6l2Qijvj/YaOcGx6Sj8CoCd8JEey3
1385fTGaGuqDIQY8n7pc/5TqarjDa1U0Tz0yH92BFODEPM2dMPgwqZfT7syj0B9f
1386HBOB1BirlNFjw55/NZKeX0Tq7PQiXLfoPX2k+YmpkbIq2eszh+6l/ePazIjm
1387iSZuxyuC0F6dWdsU7JGDBcNeDsYq0ATdcT0gTlgn/FP7eHgZFLL8kFKJOGJg
1388B7Sg7KxrUNb9uShr71ItOrL/8QFArDcCAwEAAaOCAh4wggIaMA8GA1UdEwEB
1389/wQFMAMBAf8wggG1BgNVHSAEggGsMIIBqDCCAaQGDysGAQQBsT4AAAEJKIOR
1390MTCCAY8wggFIBggrBgEFBQcCAjCCAToaggE2UmVsaWFuY2Ugb24gb3IgdXNl
1391IG9mIHRoaXMgQ2VydGlmaWNhdGUgY3JlYXRlcyBhbiBhY2tub3dsZWRnbWVu
1392dCBhbmQgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5k
1393YXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgdGhlIENlcnRpZmlj
1394YXRpb24gUHJhY3RpY2UgU3RhdGVtZW50IGFuZCB0aGUgUmVseWluZyBQYXJ0
1395eSBBZ3JlZW1lbnQsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdCB0aGUgYmVUUlVT
1396VGVkIHdlYiBzaXRlLCBodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVj
1397dHNfc2VydmljZXMvaW5kZXguaHRtbDBBBggrBgEFBQcCARY1aHR0cDovL3d3
1398dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWww
1399HQYDVR0OBBYEFEU9w6nR3D8kVpgccxiIav+DR+22MB8GA1UdIwQYMBaAFEU9
1400w6nR3D8kVpgccxiIav+DR+22MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0B
1401AQUFAAOCAQEASZK8o+6svfoNyYt5hhwjdrCAWXf82n+0S9/DZEtqTg6t8n1Z
1402dwWtColzsPq8y9yNAIiPpqCy6qxSJ7+hSHyXEHu67RMdmgduyzFiEuhjA6p9
1403beP4G3YheBufS0OM00mG9htc9i5gFdPp43t1P9ACg9AYgkHNZTfqjjJ+vWuZ
1404XTARyNtIVBw74acT02pIk/c9jH8F6M7ziCpjBLjqflh8AXtb4cV97yHgjQ5d
1405UX2xZ/2jvTg2xvI4hocalmhgRvsoFEdV4aeADGvi6t9NfJBIoDa9CReJf8Py
140605yc493EG931t3GzUwWJBtDLSoDByFOQtTwxiBdQn8nEDovYqAJjDQ==
1407-----END CERTIFICATE-----
1408-----BEGIN CERTIFICATE-----
1409MIIFLDCCBBSgAwIBAgIEOU99hzANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQG
1410EwJXVzESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQDExJiZVRSVVNUZWQg
1411Um9vdCBDQXMxGjAYBgNVBAMTEWJlVFJVU1RlZCBSb290IENBMB4XDTAwMDYy
1412MDE0MjEwNFoXDTEwMDYyMDEzMjEwNFowWjELMAkGA1UEBhMCV1cxEjAQBgNV
1413BAoTCWJlVFJVU1RlZDEbMBkGA1UEAxMSYmVUUlVTVGVkIFJvb3QgQ0FzMRow
1414GAYDVQQDExFiZVRSVVNUZWQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD
1415ggEPADCCAQoCggEBANS0c3oTCjhVAb6JVuGUntS+WutKNHUbYSnE4a0IYCF4
1416SP+00PpeQY1hRIfo7clY+vyTmt9P6j41ffgzeubx181vSUs9Ty1uDoM6GHh3
1417o8/n9E1z2Jo7Gh2+lVPPIJfCzz4kUmwMjmVZxXH/YgmPqsWPzGCgc0rXOD8V
1418cr+il7dw6K/ifhYGTPWqZCZyByWtNfwYsSbX2P8ZDoMbjNx4RWc0PfSvHI3k
1419bWvtILNnmrRhyxdviTX/507AMhLn7uzf/5cwdO2NR47rtMNE5qdMf1ZD6Li8
1420tr76g5fmu/vEtpO+GRg+jIG5c4gW9JZDnGdzF5DYCW5jrEq2I8QBoa2k5MUC
1421AwEAAaOCAfgwggH0MA8GA1UdEwEB/wQFMAMBAf8wggFZBgNVHSAEggFQMIIB
1422TDCCAUgGCisGAQQBsT4BAAAwggE4MIIBAQYIKwYBBQUHAgIwgfQagfFSZWxp
1423YW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVz
1424IGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0
1425ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGFuZCBjZXJ0aWZpY2F0aW9u
1426IHByYWN0aWNlIHN0YXRlbWVudCwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0IGJl
1427VFJVU1RlZCdzIHdlYiBzaXRlLCBodHRwczovL3d3dy5iZVRSVVNUZWQuY29t
1428L3ZhdWx0L3Rlcm1zMDEGCCsGAQUFBwIBFiVodHRwczovL3d3dy5iZVRSVVNU
1429ZWQuY29tL3ZhdWx0L3Rlcm1zMDQGA1UdHwQtMCswKaAnoCWkIzAhMRIwEAYD
1430VQQKEwliZVRSVVNUZWQxCzAJBgNVBAYTAldXMB0GA1UdDgQWBBQquZtpLjub
14312M3eKjEENGvKBxirZzAfBgNVHSMEGDAWgBQquZtpLjub2M3eKjEENGvKBxir
1432ZzAOBgNVHQ8BAf8EBAMCAf4wDQYJKoZIhvcNAQEFBQADggEBAHlh26Nebhax
14336nZR+csVm8tpvuaBa58oH2U+3RGFktToQb9+M70j5/Egv6S0phkBxoyNNXxl
1434pE8JpNbYIxUFE6dDea/bow6be3ga8wSGWsb2jCBHOElQBp1yZzrwmAOtlmdE
1435/D8QDYZN5AA7KXvOOzuZhmElQITcE2K3+spZ1gMe1lMBzW1MaFVA4e5rxyoA
1436AEiCswoBw2AqDPeCNe5IhpbkdNQ96gFxugR1QKepfzk5mlWXKWWuGVUlBXJH
14370+gY3Ljpr0NzARJ0o+FcXxVdJPP55PS2Z2cS52QiivalQaYctmBjRYoQtLpG
1438EK5BV2VsPyMQPyEQWbfkQN0mDCP2qq4=
1439-----END CERTIFICATE-----
1440-----BEGIN CERTIFICATE-----
1441MIIGUTCCBTmgAwIBAgIEPLVPQDANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQK
1442EwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEG
1443A1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0EgLSBFbnRydXN0IEltcGxlbWVudGF0
1444aW9uMB4XDTAyMDQxMTA4MjQyN1oXDTIyMDQxMTA4NTQyN1owZjESMBAGA1UE
1445ChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAx
1446BgNVBAMTKmJlVFJVU1RlZCBSb290IENBIC0gRW50cnVzdCBJbXBsZW1lbnRh
1447dGlvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALr0RAOqEmq1
1448Q+xVkrYwfTVXDNvzDSduTPdQqJtOK2/b9a0cS12zqcH+e0TrW6MFDR/FNCsw
1449ACnxeECypP869AGIF37m1CbTukzqMvtDd5eHI8XbQ6P1KqNRXuE70mVpflUV
1450m3rnafdE4Fe1FehmYA8NA/uCjqPoEXtsvsdjDheT389Lrm5zdeDzqrmkwAkb
1451hepxKYhBMvnwKg5sCfJ0a2ZsUhMfGLzUPvfYbiCeyv78IZTuEyhL11xeDGbu
14526bsPwTSxfwh28z0mcMmLJR1iJAzqHHVOwBLkuhMdMCktVjMFu5dZfsZJT4nX
1453LySotohAtWSSU1Yk5KKghbNekLQSM80CAwEAAaOCAwUwggMBMIIBtwYDVR0g
1454BIIBrjCCAaowggGmBg8rBgEEAbE+AAACCSiDkTEwggGRMIIBSQYIKwYBBQUH
1455AgIwggE7GoIBN1JlbGlhbmNlIG9uIG9yIHVzZSBvZiB0aGlzIENlcnRpZmlj
1456YXRlIGNyZWF0ZXMgYW4gYWNrbm93bGVkZ21lbnQgYW5kIGFjY2VwdGFuY2Ug
1457b2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29u
1458ZGl0aW9ucyBvZiB1c2UsIHRoZSBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0
1459YXRlbWVudCBhbmQgdGhlIFJlbHlpbmcgUGFydHkgQWdyZWVtZW50LCB3aGlj
1460aCBjYW4gYmUgZm91bmQgYXQgdGhlIGJlVFJVU1RlZCB3ZWIgc2l0ZSwgaHR0
1461cHM6Ly93d3cuYmV0cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRl
1462eC5odG1sMEIGCCsGAQUFBwIBFjZodHRwczovL3d3dy5iZXRydXN0ZWQuY29t
1463L3Byb2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWwwEQYJYIZIAYb4QgEBBAQD
1464AgAHMIGJBgNVHR8EgYEwfzB9oHugeaR3MHUxEjAQBgNVBAoTCWJlVFJVU1Rl
1465ZDEbMBkGA1UECxMSYmVUUlVTVGVkIFJvb3QgQ0FzMTMwMQYDVQQDEypiZVRS
1466VVNUZWQgUm9vdCBDQSAtIEVudHJ1c3QgSW1wbGVtZW50YXRpb24xDTALBgNV
1467BAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMjA0MTEwODI0MjdagQ8yMDIyMDQx
1468MTA4NTQyN1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFH1w5a44iwY/qhwa
1469j/nPJDCqhIQWMB0GA1UdDgQWBBR9cOWuOIsGP6ocGo/5zyQwqoSEFjAMBgNV
1470HRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDANBgkq
1471hkiG9w0BAQUFAAOCAQEAKrgXzh8QlOu4mre5X+za95IkrNySO8cgjfKZ5V04
1472ocI07cUTWVwFtStPYZuR+0H8/NU8TZh2BvWBfevdkObRVlTa4y0MnxEylCIB
1473evZsLHRnBMylj44ss0O1lKLQfelifwa+JwGDnjr9iu6YQ0pr17WXOzq/T220
1474Y/ozADQuLW2WyXvKmWO6vvT2MKAtmJbpVkQFqUSjYRDrgqFnXbxdJ3Wqiig2
1475KjiS2d2kXgClzMx8KSreKJCrt+G2/30lC0DYqjSjLd4H61/OCt3Kfjp9JsFi
1476aDrmLzfzgYYhxKlkqu9FNtEaZnz46TfW1mG+oq1I59/mdP7TbX3SJdysYlep
14779w==
1478-----END CERTIFICATE-----
1479-----BEGIN CERTIFICATE-----
1480MIIFaDCCBFCgAwIBAgIQO1nHe81bV569N1KsdrSqGjANBgkqhkiG9w0BAQUF
1481ADBiMRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBS
1482b290IENBczEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1w
1483bGVtZW50YXRpb24wHhcNMDIwNDExMTExODEzWhcNMjIwNDEyMTEwNzI1WjBi
1484MRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290
1485IENBczEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVt
1486ZW50YXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkujQw
1487CY5X0LkGLG9uJIAiv11DpvpPrILnHGhwhRujbrWqeNluB0s/6d/16uhUoWGK
1488Di9pdRi3DOUUjXFumLhV/AyV0Jtu4S2I1DpAa5LxmZZk3tv/ePTulh1HiXzU
1489vrmIdyM6CeYEnm2qXtLIvZpOGd+J6lsOfsPktPDgaTuID0GQ+NRxQyTBjyZL
1490O1bp/4xsN+lFrYWMU8NghpBKlsmzVLC7F/AcRdnUGxlkVgoZ98zh/4avflhe
1491rHqQH8koOUV7orbHnB/ahdQhhlkwk75TMzf270HPM8ercmsl9fNTGwxMLvF1
1492S++gh/f+ihXQbNXL+WhTuXAVE8L1LvtDNXUtAgMBAAGjggIYMIICFDAMBgNV
1493HRMEBTADAQH/MIIBtQYDVR0gBIIBrDCCAagwggGkBg8rBgEEAbE+AAADCSiD
1494kTEwggGPMEEGCCsGAQUFBwIBFjVodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20v
1495cHJvZHVjdHNfc2VydmljZXMvaW5kZXguaHRtbDCCAUgGCCsGAQUFBwICMIIB
1496OhqCATZSZWxpYW5jZSBvbiBvciB1c2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBj
1497cmVhdGVzIGFuIGFja25vd2xlZGdtZW50IGFuZCBhY2NlcHRhbmNlIG9mIHRo
1498ZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlv
1499bnMgb2YgdXNlLCB0aGUgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1l
1500bnQgYW5kIHRoZSBSZWx5aW5nIFBhcnR5IEFncmVlbWVudCwgd2hpY2ggY2Fu
1501IGJlIGZvdW5kIGF0IHRoZSBiZVRSVVNUZWQgd2ViIHNpdGUsIGh0dHA6Ly93
1502d3cuYmV0cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRleC5odG1s
1503MAsGA1UdDwQEAwIBBjAfBgNVHSMEGDAWgBSp7BR++dlDzFMrFK3P9/BZiUHN
1504GTAdBgNVHQ4EFgQUqewUfvnZQ8xTKxStz/fwWYlBzRkwDQYJKoZIhvcNAQEF
1505BQADggEBANuXsHXqDMTBmMpWBcCorSZIry0g6IHHtt9DwSwddUvUQo3neqh0
15063GZCWYez9Wlt2ames30cMcH1VOJZJEnl7r05pmuKmET7m9cqg5c0Lcd9NUwt
1507NLg+DcTsiCevnpL9UGGCqGAHFFPMZRPB9kdEadIxyKbdLrML3kqNWz2rDcI1
1508UqJWN8wyiyiFQpyRQHpwKzg21eFzGh/l+n5f3NacOzDq28BbJ1zTcwfBwvNM
1509m2+fG8oeqqg4MwlYsq78B+g23FW6L09A/nq9BqaBwZMifIYRCgZ3SK41ty8y
1510mmFei74pnykkiFY5LKjSq5YDWtRIn7lAhAuYaPsBQ9Yb4gmxlxw=
1511-----END CERTIFICATE-----
1512-----BEGIN CERTIFICATE-----
1513MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC
1514TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0
1515aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0
1516aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz
1517MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw
1518IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR
1519dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG
15209w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp
1521li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D
1522rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ
1523WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug
1524F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU
1525xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC
1526Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv
1527dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw
1528ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl
1529IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh
1530c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
1531ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
1532Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI
1533KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T
1534KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq
1535y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p
1536dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD
1537VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL
1538MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk
1539fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8
15407C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R
1541cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y
1542mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW
1543xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK
1544SnQ2+Q==
1545-----END CERTIFICATE-----
1546
1547-----BEGIN CERTIFICATE-----
1548MIIETzCCAzegAwIBAgIEO63vKTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
1549ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
1550U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIzMTQxODE3WhcNMTEw
1551OTIzMTMxODE3WjB1MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
1552LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWdu
1553ZXQgLSBDQSBLbGFzYSAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4SRW9Q58g5DY1Hw7h
1554gCRKBEdPdGn0MFHsfw7rlu/oQm7IChI/uWd9q5wwo77YojtTDjRnpgZsjqBeynX8T90vFILqsY2K
15555CF1OESalwvVr3sZiQX79lisuFKat92u6hBFikFIVxfHHB67Af+g7u0dEHdDW7lwy81MwFYxBTRy
15569wIDAQABo4IBbTCCAWkwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwggEEBgNVHSAE
1557gfwwgfkwgfYGDSsGAQQBvj8CAQoBAQAwgeQwgZoGCCsGAQUFBwICMIGNGoGKQ2VydHlmaWthdCB3
1558eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtOiAiUG9saXR5a2EgQ2VydHlmaWthY2ppIGRs
1559YSBSb290Q0EiLiBDZXJ0eWZpa2F0IHd5c3Rhd2lvbnkgcHJ6ZXogUm9vdENBIHcgaGllcmFyY2hp
1560aSBDQyBTaWduZXQuMEUGCCsGAQUFBwIBFjlodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0b3Jp
1561dW0vZG9rdW1lbnR5L3BjX3Jvb3RjYS50eHQwHwYDVR0jBBgwFoAUwJvFIw0C4aZOSGsfAOnjmhQb
1562sa8wHQYDVR0OBBYEFMODHtVZd1T7TftXR/nEI1zR54njMA0GCSqGSIb3DQEBBQUAA4IBAQBRIHQB
1563FIGh8Jpxt87AgSLwIEEk4+oGy769u3NtoaR0R3WNMdmt7fXTi0tyTQ9V4AIszxVjhnUPaKnF1KYy
1564f8Tl+YTzk9ZfFkZ3kCdSaILZAOIrmqWNLPmjUQ5/JiMGho0e1YmWUcMci84+pIisTsytFzVP32/W
1565+sz2H4FQAvOIMmxB7EJX9AdbnXn9EXZ+4nCqi0ft5z96ZqOJJiCB3vSaoYg+wdkcvb6souMJzuc2
1566uptXtR1Xf3ihlHaGW+hmnpcwFA6AoNrom6Vgzk6U1ienx0Cw28BhRSKqzKkyXkuK8gRflZUx84uf
1567tXncwKJrMiE3lvgOOBITRzcahirLer4c
1568-----END CERTIFICATE-----
1569-----BEGIN CERTIFICATE-----
1570MIIE9zCCA9+gAwIBAgIEPL/xoTANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJQTDEfMB0GA1UE
1571ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
1572U2lnbmV0MSAwHgYDVQQDExdDQyBTaWduZXQgLSBQQ0EgS2xhc2EgMjAeFw0wMjA0MTkxMDI5NTNa
1573Fw0xNzA0MTgxMjUzMDdaMHUxCzAJBgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4g
1574eiBvLm8uMSQwIgYDVQQLExtDZW50cnVtIENlcnR5ZmlrYWNqaSBTaWduZXQxHzAdBgNVBAMTFkND
1575IFNpZ25ldCAtIENBIEtsYXNhIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqgLJu
1576QqY4yavbSgHg8CyfKTx4BokNSDOVz4eD9vptUr11Kqd06ED1hlH7Sg0goBFAfntNU/QTKwSBaNui
1577me7C4sSEdgsKrPoAhGb4Mq8y7Ty7RqZz7mkzNMqzL2L2U4yQ2QjvpH8MH0IBqOWEcpSkpwnrCDIm
1578RoTfd+YlZWKi2JceQixUUYIQ45Ox8+x8hHbvvZdgqtcvo8PW27qoHkp/7hMuJ44kDAGrmxffBXl/
1579OBRZp0uO1CSLcMcVJzyr2phKhy406MYdWrtNPEluGs0GFDzd0nrIctiWAO4cmct4S72S9Q6e//0G
1580O9f3/Ca5Kb2I1xYLj/xE+HgjHX9aD2MhAgMBAAGjggGMMIIBiDAPBgNVHRMBAf8EBTADAQH/MA4G
1581A1UdDwEB/wQEAwIBBjCB4wYDVR0gBIHbMIHYMIHVBg0rBgEEAb4/AhQKAQEAMIHDMHUGCCsGAQUF
1582BwICMGkaZ0NlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
1583eWthIENlcnR5ZmlrYWNqaSBQQ0EyIC0gQ2VydHlmaWthdHkgVXJ6ZWRvdyBLbGFzeSAyIi4wSgYI
1584KwYBBQUHAgEWPmh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9kb2t1bWVudHkva2xh
1585c2EyL3BjX3BjYTIudHh0MD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6Ly93d3cuc2lnbmV0LnBsL3Jl
1586cG96eXRvcml1bS9jcmwvcGNhMi5jcmwwHwYDVR0jBBgwFoAUwGxGyl2CfpYHRonE82AVXO08kMIw
1587HQYDVR0OBBYEFLtFBlILy4HNKVSzvHxBTM0HDowlMA0GCSqGSIb3DQEBBQUAA4IBAQBWTsCbqXrX
1588hBBev5v5cIuc6gJM8ww7oR0uMQRZoFSqvQUPWBYM2/TLI/f8UM9hSShUVj3zEsSj/vFHagUVmzuV
1589Xo5u0WK8iaqATSyEVBhADHrPG6wYcLKJlagge/ILA0m+SieyP2sjYD9MUB9KZIEyBKv0429UuDTw
15906P7pslxMWJBSNyQxaLIs0SRKsqZZWkc7ZYAj2apSkBMX2Is1oHA+PwkF6jQMwCao/+CndXPUzfCF
15916caa9WwW31W26MlXCvSmJgfiTPwGvm4PkPmOnmWZ3CczzhHl4q7ztHFzshJH3sZWDnrWwBFjzz5e
1592Pr3WHV1wA7EY6oT4zBx+2gT9XBTB
1593-----END CERTIFICATE-----
1594-----BEGIN CERTIFICATE-----
1595MIIEUzCCAzugAwIBAgIEPq+qjzANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJQTDE3MDUGA1UE
1596ChMuQ1ppQyBDZW50cmFzdCBTQSB3IGltaWVuaXUgTWluaXN0cmEgR29zcG9kYXJraTEZMBcGA1UE
1597AxMQQ1ppQyBDZW50cmFzdCBTQTAeFw0wMzA0MzAxMDUwNTVaFw0wODA0MjgxMDUwNTVaMGgxCzAJ
1598BgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4geiBvLm8uMR8wHQYDVQQDExZDQyBT
1599aWduZXQgLSBDQSBLbGFzYSAzMRcwFQYDVQQFEw5OdW1lciB3cGlzdTogNDCCASIwDQYJKoZIhvcN
1600AQEBBQADggEPADCCAQoCggEBALVdeOM62cPH2NERFxbS5FIp/HSv3fgesdVsTUFxZbGtE+/E0RMl
1601KZQJHH9emx7vRYubsi4EOLCjYsCOTFvgGRIpZzx7R7T5c0Di5XFkRU4gjBl7aHJoKb5SLzGlWdoX
1602GsekVtl6keEACrizV2EafqjI8cnBWY7OxQ1ooLQp5AeFjXg+5PT0lO6TUZAubqjFbhVbxSWjqvdj
160393RGfyYE76MnNn4c2xWySD07n7uno06TC0IJe6+3WSX1h+76VsIFouWBXOoM7cxxiLjoqdBVu24+
1604P8e81SukE7qEvOwDPmk9ZJFtt1nBNg8a1kaixcljrA/43XwOPz6qnJ+cIj/xywECAwEAAaOCAQow
1605ggEGMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMDMGA1UdIAEB/wQpMCcwJQYEVR0g
1606ADAdMBsGCCsGAQUFBwIBFg93d3cuY2VudHJhc3QucGwwgY4GA1UdIwSBhjCBg4AU2a7r85Cp1iJN
1607W0Ca1LR6VG3996ShZaRjMGExCzAJBgNVBAYTAlBMMTcwNQYDVQQKEy5DWmlDIENlbnRyYXN0IFNB
1608IHcgaW1pZW5pdSBNaW5pc3RyYSBHb3Nwb2RhcmtpMRkwFwYDVQQDExBDWmlDIENlbnRyYXN0IFNB
1609ggQ9/0sQMB0GA1UdDgQWBBR7Y8wZkHq0zrY7nn1tFSdQ0PlJuTANBgkqhkiG9w0BAQUFAAOCAQEA
1610ldt/svO5c1MU08FKgrOXCGEbEPbQxhpM0xcd6Iv3dCo6qugEgjEs9Qm5CwUNKMnFsvR27cJWUvZb
1611MVcvwlwCwclOdwF6u/QRS8bC2HYErhYo9bp9yuxxzuow2A94c5fPqfVrjXy+vDouchAm6+A5Wjzv
1612J8wxVFDCs+9iGACmyUWr/JGXCYiQIbQkwlkRKHHlan9ymKf1NvIej/3EpeT8fKr6ywxGuhAfqofW
1613pg3WJY/RCB4lTzD8vZGNwfMFGkWhJkypad3i9w3lGmDVpsHaWtCgGfd0H7tUtWPkP+t7EjIRCD9J
1614HYnTR+wbbewc5vOI+UobR15ynGfFIaSIiMTVtQ==
1615-----END CERTIFICATE-----
1616-----BEGIN CERTIFICATE-----
1617MIIEejCCA2KgAwIBAgIEP4vk6TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQ
1618TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2Vu
1619dHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBD
1620QSBLbGFzYSAyMB4XDTAzMTAxNDExNTgyMloXDTE3MDQxODEyNTMwN1owdzELMAkG
1621A1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6IG8uby4xJDAiBgNV
1622BAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEhMB8GA1UEAxMYQ0MgU2ln
1623bmV0IC0gT0NTUCBLbGFzYSAyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCo
1624VCsaBStblXQYVNthe3dvaCrfvKpPXngh4almm988iIlEv9CVTaAdCfaJNihvA+Vs
1625Qw8++ix1VqteMQE474/MV/YaXigP0Zr0QB+g+/7PWVlv+5U9Gzp9+Xx4DJay8AoI
1626iB7Iy5Qf9iZiHm5BiPRIuUXT4ZRbZRYPh0/76vgRsQIDAQABo4IBkjCCAY4wDgYD
1627VR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEEGA1UdHwQ6MDgwNqA0
1628oDKGMGh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9jcmwva2xhc2Ey
1629LmNybDCB2AYDVR0gBIHQMIHNMIHKBg4rBgEEAb4/AoFICgwBADCBtzBsBggrBgEF
1630BQcCAjBgGl5DZXJ0eWZpa2F0IHd5ZGFueSB6Z29kbmllIHogZG9rdW1lbnRlbSAi
1631UG9saXR5a2EgQ2VydHlmaWthY2ppIC0gQ2VydHlmaWthdHkgcmVzcG9uZGVyb3cg
1632T0NTUCIuMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0
1633b3JpdW0vZG9rdW1lbnR5L3BjX29jc3BfMV8wLnBkZjAfBgNVHSMEGDAWgBS7RQZS
1634C8uBzSlUs7x8QUzNBw6MJTAdBgNVHQ4EFgQUKEVrOY7cEHvsVgvoyZdytlbtgwEw
1635CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAQrRg5MV6dxr0HU2IsLInxhvt
1636iUVmSFkIUsBCjzLoewOXA16d2oDyHhI/eE+VgAsp+2ANjZu4xRteHIHoYMsN218M
1637eD2MLRsYS0U9xxAFK9gDj/KscPbrrdoqLvtPSMhUb4adJS9HLhvUe6BicvBf3A71
1638iCNe431axGNDWKnpuj2KUpj4CFHYsWCXky847YtTXDjri9NIwJJauazsrSjK+oXp
1639ngRS506mdQ7vWrtApkh8zhhWp7duCkjcCo1O8JxqYr2qEW1fXmgOISe010v2mmuv
1640hHxPyVwoAU4KkOw0nbXZn53yak0is5+XmAjh0wWue44AssHrjC9nUh3mkLt6eQ==
1641-----END CERTIFICATE-----
1642-----BEGIN CERTIFICATE-----
1643MIIEezCCA2OgAwIBAgIEP4vnLzANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJQ
1644TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEfMB0GA1UEAxMWQ0Mg
1645U2lnbmV0IC0gQ0EgS2xhc2EgMzEXMBUGA1UEBRMOTnVtZXIgd3Bpc3U6IDQwHhcN
1646MDMxMDE0MTIwODAwWhcNMDgwNDI4MTA1MDU1WjB3MQswCQYDVQQGEwJQTDEfMB0G
1647A1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBD
1648ZXJ0eWZpa2FjamkgU2lnbmV0MSEwHwYDVQQDExhDQyBTaWduZXQgLSBPQ1NQIEts
1649YXNhIDMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM/9GwvARNuCVN+PqZmO
16504FqH8vTqhenUyqRkmAVT4YhLu0a9AXeLAYVDu+NTkYzsAUMAfu55rIKHNLlm6WbF
1651KvLiKKz4p4pbUr+ToPcwl/TDotidloUdBAxDg0SL+PmQqACZDe3seJho2IYf2vDL
1652/G4TLMbKmNB0mlWFuN0f4fJNAgMBAAGjggGgMIIBnDAOBgNVHQ8BAf8EBAMCB4Aw
1653EwYDVR0lBAwwCgYIKwYBBQUHAwkwTwYDVR0fBEgwRjBEoEKgQIY+aHR0cDovL3d3
1654dy5zaWduZXQucGwva3dhbGlmaWtvd2FuZS9yZXBvenl0b3JpdW0vY3JsL2tsYXNh
1655My5jcmwwgdgGA1UdIASB0DCBzTCBygYOKwYBBAG+PwKCLAoCAQAwgbcwbAYIKwYB
1656BQUHAgIwYBpeQ2VydHlmaWthdCB3eWRhbnkgemdvZG5pZSB6IGRva3VtZW50ZW0g
1657IlBvbGl0eWthIENlcnR5ZmlrYWNqaSAtIENlcnR5ZmlrYXR5IHJlc3BvbmRlcm93
1658IE9DU1AiLjBHBggrBgEFBQcCARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5
1659dG9yaXVtL2Rva3VtZW50eS9wY19vY3NwXzFfMC5wZGYwHwYDVR0jBBgwFoAUe2PM
1660GZB6tM62O559bRUnUND5SbkwHQYDVR0OBBYEFG4jnCMvBALRQXtmDn9TyXQ/EKP+
1661MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADggEBACXrKG5Def5lpRwmZom3UEDq
1662bl7y4U3qomG4B+ok2FVZGgPZti+ZgvrenPj7PtbYCUBPsCSTNrznKinoT3gD9lQQ
1663xkEHwdc6VD1GlFp+qI64u0+wS9Epatrdf7aBnizrOIB4LJd4E2TWQ6trspetjMIU
1664upyWls1BmYUxB91R7QkTiAUSNZ87s3auhZuG4f0V0JLVCcg2rn7AN1rfMkgxCbHk
1665GxiQbYWFljl6aatxR3odnnzVUe1I8uoY2JXpmmUcOG4dNGuQYziyKG3mtXCQWvug
16665qi9Mf3KUh1oSTKx6HfLjjNl1+wMB5Mdb8LF0XyZLdJM9yIZh7SBRsYm9QiXevY=
1667-----END CERTIFICATE-----
1668-----BEGIN CERTIFICATE-----
1669MIIFGjCCBAKgAwIBAgIEPL7eEDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
1670ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
1671U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwNDE4MTQ1NDA4WhcNMjYw
1672OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
1673LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu
1674ZXQgLSBQQ0EgS2xhc2EgMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7BrBlbN5ma
1675M5eg0BOTqoZ+9NBDvU8Lm5rTdrMswFTCathzpVVLK/JD4K3+4oCZ9SRAspEXE4gvwb08ASY6w5s+
1676HpRkeJw8YzMFR5kDZD5adgnCAy4vDfIXYZgppXPaTQ8wnfUZ7BZ7Zfa7QBemUIcJIzJBB0UqgtxW
1677Ceol9IekpBRVmuuSA6QG0Jkm+pGDJ05yj2eQG8jTcBENM7sVA8rGRMyFA4skSZ+D0OG6FS2xC1i9
1678JyN0ag1yII/LPx8HK5J4W9MaPRNjAEeaa2qI9EpchwrOxnyVbQfSedCG1VRJfAsE/9tT9CMUPZ3x
1679W20QjQcSZJqVcmGW9gVsXKQOVLsCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
1680AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQEBMIHkMIGaBggrBgEFBQcC
1681AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
1682eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6
1683IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z
1684aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw
1685OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy
1686bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUwGxGyl2CfpYHRonE
168782AVXO08kMIwDQYJKoZIhvcNAQEFBQADggEBABp1TAUsa+BeVWg4cjowc8yTJ5XN3GvN96GObMkx
1688UGY7U9kVrLI71xBgoNVyzXTiMNDBvjh7vdPWjpl5SDiRpnnKiOFXA43HvNWzUaOkTu1mxjJsZsan
1689ot1Xt6j0ZDC+03FjLHdYMyM9kSWp6afb4980EPYZCcSzgM5TOGfJmNii5Tq468VFKrX+52Aou1G2
16902Ohu+EEOlOrG7ylKv1hHUJJCjwN0ZVEIn1nDbrU9FeGCz8J9ihVUvnENEBbBkU37PWqWuHitKQDV
1691tcwTwJJdR8cmKq3NmkwAm9fPacidQLpaw0WkuGrS+fEDhu1Nhy9xELP6NA9GRTCNxm/dXlcwnmY=
1692-----END CERTIFICATE-----
1693-----BEGIN CERTIFICATE-----
1694MIIFGjCCBAKgAwIBAgIEPV0tNDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
1695ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
1696U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwODE2MTY0OTU2WhcNMjYw
1697OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
1698LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu
1699ZXQgLSBQQ0EgS2xhc2EgMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALN3LanJtdue
1700Ne6geWUTFENa+lEuzqELcoqhYB+a/tJcPEkc6TX/bYPzalRRjqs+quMP6KZTU0DixOrV+K7iWaqA
1701iQ913HX5IBLmKDCrTVW/ZvSDpiBKbxlHfSNuJxAuVT6HdbzK7yAW38ssX+yS2tZYHZ5FhZcfqzPE
1702OpO94mAKcBUhk6T/ki0evXX/ZvvktwmF3hKattzwtM4JMLurAEl8SInyEYULw5JdlfcBez2Tg6Db
1703w34hA1A+ckTwhxzecrB8TUe2BnQKOs9vr2cCACpFFcOmPkM0Drtjctr1QHm1tYSqRFRf9VcV5tfC
17043P8QqoK4ONjtLPHc9x5NE1uK/FMCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
1705AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQECMIHkMIGaBggrBgEFBQcC
1706AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
1707eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6
1708IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z
1709aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw
1710OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy
1711bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUXvthcPHlH5BgGhlM
1712ErJNXWlhlgAwDQYJKoZIhvcNAQEFBQADggEBACIce95Mvn710KCAISA0CuHD4aznTU6pLoCDShW4
17137OR+GTpJUm1coTcUqlBHV9mra4VFrBcBuOkHZoBLq/jmE0QJWnpSEULDcH9J3mF0nqO9SM+mWyJG
1714dsJF/XU/7smummgjMNQXwzQTtWORF+6v5KUbWX85anO2wR+M6YTBWC55zWpWi4RG3vkHFs5Ze2oF
1715JTlpuxw9ZgxTnWlwI9QR2MvEhYIUMKMOWxw1nt0kKj+5TCNQQGh/VJJ1dsiroGh/io1DOcePEhKz
17161Ag52y6Wf0nJJB9yk0sFakqZH18F7eQecQImgZyyeRtsG95leNugB3BXWCW+KxwiBrtQTXv4dTE=
1717-----END CERTIFICATE-----
1718-----BEGIN CERTIFICATE-----
1719MIIEzzCCA7egAwIBAgIEO6ocGTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
1720ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
1721U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIwMTY0MjE5WhcNMjYw
1722OTIxMTU0MjE5WjBxMQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
1723LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MRswGQYDVQQDExJDQyBTaWdu
1724ZXQgLSBSb290Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrr2vydnNpELfGW3Ks
1725ARiDhJvwDtUe4AbWev+OfMc3+vA29nX8ZmIwno3gmItjo5DbUCCRiCMq5c9epcGu+kg4a3BJChVX
1726REl8gVh0ST15rr3RKrSc4VgsvQzl0ZUraeQLl8JoRT5PLsUj3qwF78jUCQVckiiLVcnGfZtFCm+D
1727CJXliQBDMB9XFAUEiO/DtEBs0B7wJGx7lgJeJpQUcGiaOPjcJDYOk7rNAYmmD2gWeSlepufO8luU
1728YG/YDxTC4mqhRqfa4MnVO5dqy+ICj2UvUpHbZDB0KfGRibgBYeQP1kuqgIzJN4UqknVAJb0aMBSP
1729l+9k2fAUdchx1njlbdcbAgMBAAGjggFtMIIBaTAPBgNVHRMBAf8EBTADAQH/MIIBBAYDVR0gBIH8
1730MIH5MIH2Bg0rBgEEAb4/AgEKAQEAMIHkMIGaBggrBgEFBQcCAjCBjRqBikNlcnR5ZmlrYXQgd3lz
1731dGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0eWthIENlcnR5ZmlrYWNqaSBkbGEg
1732Um9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6IFJvb3RDQSB3IGhpZXJhcmNoaWkg
1733Q0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVt
1734L2Rva3VtZW50eS9wY19yb290Y2EudHh0MB0GA1UdDgQWBBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAf
1735BgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN
1736AQEFBQADggEBAGnY5QmYqnnO9OqFOWZxxb25UHRnaRF6IV9aaGit5BZufZj2Tq3v8L3SgE34GOoI
1737cdRMMG5JEpEU4mN/Ef3oY6Eo+7HfqaPHI4KFmbDSPiK5s+wmf+bQSm0Yq5/h4ZOdcAESlLQeLSt1
1738CQk2JoKQJ6pyAf6xJBgWEIlm4RXE4J3324PUiOp83kW6MDvaa1xY976WyInr4rwoLgxVl11LZeKW
1739ha0RJJxJgw/NyWpKG7LWCm1fglF8JH51vZNndGYq1iKtfnrIOvLZq6bzaCiZm1EurD8HE6P7pmAB
1740KK6o3C2OXlNfNIgwkDN/cDqk5TYsTkrpfriJPdxXBH8hQOkW89g=
1741-----END CERTIFICATE-----
1742-----BEGIN CERTIFICATE-----
1743MIID/TCCA2agAwIBAgIEP4/gkTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQTDEfMB0GA1UE
1744ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
1745U2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBDQSBLbGFzYSAxMB4XDTAzMTAxNzEyMjkwMloX
1746DTExMDkyMzExMTgxN1owdjELMAkGA1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6
1747IG8uby4xJDAiBgNVBAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEgMB4GA1UEAxMXQ0Mg
1748U2lnbmV0IC0gVFNBIEtsYXNhIDEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOJYrISEtSsd
1749uHajROh5/n7NGrkpYTT9NEaPe9+ucuQ37KxIbfJwXJjgUc1dw4wCkcQ12FJarD1X6mSQ4cfN/60v
1750LfKI5ZD4nhJTMKlAj1pX9ScQ/MuyvKStCbn5WTkjPhjRAM0tdwXSnzuTEunfw0Oup559y3Iqxg1c
1751ExflB6cfAgMBAAGjggGXMIIBkzBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vd3d3LnNpZ25ldC5w
1752bC9yZXBvenl0b3JpdW0vY3JsL2tsYXNhMS5jcmwwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQM
1753MAoGCCsGAQUFBwMIMIHaBgNVHSAEgdIwgc8wgcwGDSsGAQQBvj8CZAoRAgEwgbowbwYIKwYBBQUH
1754AgIwYxphQ2VydHlmaWthdCB3eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtICJQb2xpdHlr
1755YSBDZXJ0eWZpa2FjamkgQ0MgU2lnbmV0IC0gWm5ha293YW5pZSBjemFzZW0iLjBHBggrBgEFBQcC
1756ARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY190c2ExXzJf
1757MS5wZGYwHwYDVR0jBBgwFoAUw4Me1Vl3VPtN+1dH+cQjXNHnieMwHQYDVR0OBBYEFJdDwEqtcavO
1758Yd9u9tej53vWXwNBMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADgYEAnpiQkqLCJQYXUrqMHUEz
1759+z3rOqS0XzSFnVVLhkVssvXc8S3FkJIiQTUrkScjI4CToCzujj3EyfNxH6yiLlMbskF8I31JxIeB
1760vueqV+s+o76CZm3ycu9hb0I4lswuxoT+q5ZzPR8Irrb51rZXlolR+7KtwMg4sFDJZ8RNgOf7tbA=
1761-----END CERTIFICATE-----
1762-----BEGIN CERTIFICATE-----
1763MIIEFTCCA36gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBvjELMAkGA1UEBhMCVVMx
1764EDAOBgNVBAgTB0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UE
1765ChMfU29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9z
1766dG1hc3RlcjEgMB4GA1UEAxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkq
1767hkiG9w0BCQEWFmhvc3RtYXN0ZXJAc3BpLWluYy5vcmcwHhcNMDMwMTE1MTYyOTE3
1768WhcNMDcwMTE0MTYyOTE3WjCBvjELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0luZGlh
1769bmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMfU29mdHdhcmUgaW4g
1770dGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1hc3RlcjEgMB4GA1UE
1771AxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkqhkiG9w0BCQEWFmhvc3Rt
1772YXN0ZXJAc3BpLWluYy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPB6
1773rdoiLR3RodtM22LMcfwfqb5OrJNl7fwmvskgF7yP6sdD2bOfDIXhg9852jhY8/kL
1774VOFe1ELAL2OyN4RAxk0rliZQVgeTgqvgkOVIBbNwgnjN6mqtuWzFiPL+NXQExq40
1775I3whM+4lEiwSHaV+MYxWanMdhc+kImT50LKfkxcdAgMBAAGjggEfMIIBGzAdBgNV
1776HQ4EFgQUB63oQR1/vda/G4F6P4xLiN4E0vowgesGA1UdIwSB4zCB4IAUB63oQR1/
1777vda/G4F6P4xLiN4E0vqhgcSkgcEwgb4xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdJ
1778bmRpYW5hMRUwEwYDVQQHEwxJbmRpYW5hcG9saXMxKDAmBgNVBAoTH1NvZnR3YXJl
1779IGluIHRoZSBQdWJsaWMgSW50ZXJlc3QxEzARBgNVBAsTCmhvc3RtYXN0ZXIxIDAe
1780BgNVBAMTF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MSUwIwYJKoZIhvcNAQkBFhZo
1781b3N0bWFzdGVyQHNwaS1pbmMub3JnggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN
1782AQEEBQADgYEAm/Abn8c2y1nO3fgpAIslxvi9iNBZDhQtJ0VQZY6wgSfANyDOR4DW
1783iexO/AlorB49KnkFS7TjCAoLOZhcg5FaNiKnlstMI5krQmau1Qnb/vGSNsE/UGms
17841ts+QYPUs0KmGEAFUri2XzLy+aQo9Kw74VBvqnxvaaMeY5yMcKNOieY=
1785-----END CERTIFICATE-----
1786-----BEGIN CERTIFICATE-----
1787MIIEUDCCA7mgAwIBAgIJAN4ppNGwj6yIMA0GCSqGSIb3DQEBBAUAMIHMMQswCQYD
1788VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5j
1789aXNjbzEZMBcGA1UEChMQTGluZGVuIExhYiwgSW5jLjEpMCcGA1UECxMgTGluZGVu
1790IExhYiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxKTAnBgNVBAMTIExpbmRlbiBMYWIg
1791Q2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYJKoZIhvcNAQkBFhBjYUBsaW5kZW5s
1792YWIuY29tMB4XDTA1MDQyMTAyNDAzMVoXDTI1MDQxNjAyNDAzMVowgcwxCzAJBgNV
1793BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
1794c2NvMRkwFwYDVQQKExBMaW5kZW4gTGFiLCBJbmMuMSkwJwYDVQQLEyBMaW5kZW4g
1795TGFiIENlcnRpZmljYXRlIEF1dGhvcml0eTEpMCcGA1UEAxMgTGluZGVuIExhYiBD
1796ZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgkqhkiG9w0BCQEWEGNhQGxpbmRlbmxh
1797Yi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKXh1MThucdTbMg9bYBO
1798rAm8yWns32YojB0PRfbq8rUjepEhTm3/13s0u399Uc202v4ejcGhkIDWJZd2NZMF
1799oKrhmRfxGHSKPCuFaXC3jh0lRECj7k8FoPkcmaPjSyodrDFDUUuv+C06oYJoI+rk
18008REyal9NwgHvqCzOrZtiTXAdAgMBAAGjggE2MIIBMjAdBgNVHQ4EFgQUO1zK2e1f
18011wO1fHAjq6DTJobKDrcwggEBBgNVHSMEgfkwgfaAFDtcytntX9cDtXxwI6ug0yaG
1802yg63oYHSpIHPMIHMMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEW
1803MBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQTGluZGVuIExhYiwgSW5j
1804LjEpMCcGA1UECxMgTGluZGVuIExhYiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxKTAn
1805BgNVBAMTIExpbmRlbiBMYWIgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYJKoZI
1806hvcNAQkBFhBjYUBsaW5kZW5sYWIuY29tggkA3imk0bCPrIgwDAYDVR0TBAUwAwEB
1807/zANBgkqhkiG9w0BAQQFAAOBgQA/ZkgfvwHYqk1UIAKZS3kMCxz0HvYuEQtviwnu
1808xA39CIJ65Zozs28Eg1aV9/Y+Of7TnWhW+U3J3/wD/GghaAGiKK6vMn9gJBIdBX/9
1809e6ef37VGyiOEFFjnUIbuk0RWty0orN76q/lI/xjCi15XSA/VSq2j4vmnwfZcPTDu
1810glmQ1A==
1811-----END CERTIFICATE-----
diff --git a/linden/indra/newview/app_settings/anim.ini b/linden/indra/newview/app_settings/anim.ini
new file mode 100644
index 0000000..63c84e5
--- /dev/null
+++ b/linden/indra/newview/app_settings/anim.ini
@@ -0,0 +1,87 @@
1Translations 1.0
2
3[hip]
4 relativepos = firstkey
5 relativerot = firstkey
6 outname = mPelvis
7 frame = 0 1 0, 0 0 1, 1 0 0
8
9[abdomen]
10 outname = mTorso
11 frame = 0 1 0, 0 0 1, 1 0 0
12
13[chest]
14 outname = mChest
15 frame = 0 1 0, 0 0 1, 1 0 0
16
17[neckDummy]
18 ignore = true
19 frame = 0 1 0, 0 0 1, 1 0 0
20
21[neck]
22 outname = mNeck
23 frame = 0 1 0, 0 0 1, 1 0 0
24
25[head]
26 outname = mHead
27 frame = 0 1 0, 0 0 1, 1 0 0
28
29[figureHair]
30 ignore = true
31 frame = 0 1 0, 0 0 1, 1 0 0
32
33[lCollar]
34 outname = mCollarLeft
35 frame = 0 1 0, 0 0 1, 1 0 0
36
37[lShldr]
38 outname = mShoulderLeft
39 frame = 0 1 0, 0 0 1, 1 0 0
40
41[lForeArm]
42 outname = mElbowLeft
43 frame = 0 1 0, 0 0 1, 1 0 0
44
45[lHand]
46 outname = mWristLeft
47 frame = 0 1 0, 0 0 1, 1 0 0
48
49[rCollar]
50 outname = mCollarRight
51 frame = 0 1 0, 0 0 1, 1 0 0
52
53[rShldr]
54 outname = mShoulderRight
55 frame = 0 1 0, 0 0 1, 1 0 0
56
57[rForeArm]
58 outname = mElbowRight
59 frame = 0 1 0, 0 0 1, 1 0 0
60
61[rHand]
62 outname = mWristRight
63 frame = 0 1 0, 0 0 1, 1 0 0
64
65[lThigh]
66 outname = mHipLeft
67 frame = 0 1 0, 0 0 1, 1 0 0
68
69[lShin]
70 outname = mKneeLeft
71 frame = 0 1 0, 0 0 1, 1 0 0
72
73[lFoot]
74 outname = mAnkleLeft
75 frame = 0 1 0, 0 0 1, 1 0 0
76
77[rThigh]
78 outname = mHipRight
79 frame = 0 1 0, 0 0 1, 1 0 0
80
81[rShin]
82 outname = mKneeRight
83 frame = 0 1 0, 0 0 1, 1 0 0
84
85[rFoot]
86 outname = mAnkleRight
87 frame = 0 1 0, 0 0 1, 1 0 0 \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/colors.ini b/linden/indra/newview/app_settings/colors.ini
new file mode 100644
index 0000000..b4d1e85
--- /dev/null
+++ b/linden/indra/newview/app_settings/colors.ini
@@ -0,0 +1,20 @@
1version 101
2// colors.ini
3// Use this file to provide your own custom colors for the
4// Second Life user interface.
5//
6// Copy lines here from colors_base.ini and modify them
7// to your heart's content.
8//
9// The colors are in the format: <red> <green> <blue> <alpha>
10// 0 0 0 255 = black, fully opaque
11// 255 255 255 255 = white, fully opaque
12// 0 0 0 128 = black, half transparent
13//
14// The file version must appear before any comments.
15// Comments must start at the beginning of a line.
16// Set tab stops to 4 for best alignment.
17//
18// Example:
19// Make avatar names bright green:
20// AvatarNameColor 0 255 0 255
diff --git a/linden/indra/newview/app_settings/colors.xml b/linden/indra/newview/app_settings/colors.xml
new file mode 100644
index 0000000..cf9466f
--- /dev/null
+++ b/linden/indra/newview/app_settings/colors.xml
@@ -0,0 +1,3 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<settings version = "101">
3</settings>
diff --git a/linden/indra/newview/app_settings/colors_base.ini b/linden/indra/newview/app_settings/colors_base.ini
new file mode 100644
index 0000000..3c928c1
--- /dev/null
+++ b/linden/indra/newview/app_settings/colors_base.ini
@@ -0,0 +1,157 @@
1version 101
2// colors_base.ini
3// This file specifies colors that are used in the user interface.
4// To provide your own custom colors, edit the colors.ini file.
5// DO NOT EDIT THIS FILE or Second Life will crash.
6
7// Color of the names over avatar heads
8AvatarNameColor 251 175 93 255
9
10BalanceTextColor 0 255 0 255
11
12// These are "blended" with the button graphics, and hence should
13// usually be left as opaque white.
14ButtonColor 255 255 255 255
15ButtonImageColor 255 255 255 255
16
17// Text labels for buttons, like the "OK" text
18ButtonLabelColor 220 220 220 255
19ButtonLabelSelectedColor 220 220 220 255
20ButtonLabelDisabledColor 147 169 213 200
21ButtonLabelSelectedDisabledColor 164 190 237 200
22
23ButtonSelectedBgColor 62 62 62 255
24ButtonSelectedColor 255 255 255 255
25ButtonUnselectedBgColor 62 62 62 255
26ButtonUnselectedFgColor 255 255 255 255
27ButtonBorderColor 255 255 255 255
28
29// Chat History dialog
30ChatHistoryBgColor 0 0 0 0
31ChatHistoryTextColor 255 255 255 255
32
33// The floater buttons (like the close box) are white images that receive this color.
34FloaterButtonImageColor 239 156 0 255
35
36// The drop shadow behind windows and menus.
37// The button one is baked into the graphic.
38ColorDropShadow 0 0 0 255
39DefaultBackgroundColor 62 62 62 100
40DefaultHighlightDark 26 26 26 255
41DefaultHighlightLight 115 132 155 255
42DefaultShadowDark 26 26 26 255
43DefaultShadowLight 0 0 0 255
44
45// Color of the rectangle around entry fields with keyboard focus.
46FocusColor 238 156 0 255
47FocusSecondaryColor 171 212 245 255
48
49// Edit mode grid
50GridFocusPointColor 255 255 255 128
51GridlineColor 255 255 255 255
52GridlineBGColor 235 235 255 200
53GridlineShadowColor 0 0 0 80
54
55HealthTextColor 255 255 255 255
56
57HelpBgColor 200 209 204 255
58HelpFgColor 0 0 0 255
59
60HelpScrollTrackColor 183 184 188 255
61HelpScrollThumbColor 80 96 124 255
62HelpScrollHighlightColor 115 132 155 255
63HelpScrollShadowColor 0 0 0 255
64
65
66LabelDisabledColor 147 169 213 77
67LabelSelectedColor 255 255 255 255
68LabelSelectedDisabledColor 164 190 237 128
69LabelTextColor 147 169 213 255
70
71MapAutopilotColor 255 128 0 255
72
73// Menus on the top of the screen
74MenuBarBgColor 62 62 62 255
75MenuBarGodBgColor 62 62 62 255
76MenuNonProductionBgColor 128 0 0 255
77MenuNonProductionGodBgColor 128 0 0 255
78MenuDefaultBgColor 0 0 0 255
79MenuItemDisabledColor 133 133 164 128
80MenuItemEnabledColor 255 255 255 255
81MenuItemHighlightBgColor 183 184 188 80
82MenuItemHighlightFgColor 255 255 255 255
83MenuPopupBgColor 0 0 0 255
84
85// Colors for the Mini-Map
86NetMapBackgroundColor 0 0 0 77
87NetMapYouOwnAboveWater 0 255 255 255
88NetMapYouOwnBelowWater 0 200 200 255
89NetMapGroupOwnAboveWater 255 0 255 255
90NetMapGroupOwnBelowWater 200 0 200 255
91NetMapOtherOwnAboveWater 60 60 60 255
92NetMapOtherOwnBelowWater 30 30 30 255
93
94// Notify boxes are the slide-down notifications at the
95// top-right of the screen.
96NotifyBoxColor 58 147 242 255
97NotifyTipColor 58 147 242 255
98OpaqueBackgroundColor 62 62 62 255
99GroupNotifyBoxColor 70 170 255 255
100
101// Menu that spawns on right-click
102PieMenuBgColor 62 62 62 77
103PieMenuLineColor 0 0 0 128
104PieMenuSelectedColor 183 184 188 77
105
106// Colors for property lines and land ownership overlay
107PropertyColorAvail 0 0 0 0
108PropertyColorGroup 0 184 184 102
109PropertyColorOther 255 0 0 102
110PropertyColorSelf 0 255 0 102
111PropertyColorForSale 255 128 0 102
112// match the color on the world map
113PropertyColorAuction 128 0 255 102
114
115ScrollBgReadOnlyColor 200 209 204 255
116ScrollBgWriteableColor 200 209 204 255
117ScrollBGStripeColor 100 100 100 40
118ScrollDisabledColor 128 128 128 204
119ScrollSelectedBGColor 100 100 188 150
120ScrollSelectedFGColor 0 0 0 204
121ScrollUnselectedColor 0 0 0 204
122ScrollHighlightedColor 183 184 188 128
123ScrollbarThumbColor 60 76 124 255
124ScrollbarTrackColor 153 154 158 255
125
126// Outline for selected objects in world
127SilhouetteParentColor 255 255 0 255
128SilhouetteChildColor 32 106 196 255
129HighlightParentColor 255 255 0 255
130HighlightChildColor 171 212 245 255
131// For "context" highlighting, i.e. pie menu
132ContextSilhouetteColor 239 156 0 255
133
134// Horizontal sliders, as in the audio preferences
135SliderDisabledThumbColor 0 0 0 255
136SliderThumbCenterColor 183 184 188 255
137SliderThumbOutlineColor 0 0 0 255
138SliderTrackColor 0 0 0 255
139
140TextBgFocusColor 200 209 204 255
141TextBgReadOnlyColor 62 62 62 64
142TextBgWriteableColor 200 209 204 255
143TextCursorColor 0 0 0 255
144TextFgColor 0 0 0 255
145TextFgReadOnlyColor 0 0 0 192
146TextFgTentativeColor 0 0 0 128
147
148ScriptBgReadOnlyColor 200 209 204 180
149
150// Pop-up tips on UI elements and in-world objects
151ToolTipBgColor 183 184 188 200
152ToolTipBorderColor 171 212 245 255
153ToolTipTextColor 0 0 0 255
154
155
156FilterBackgroundColor 0 0 20 255
157FilterTextColor 255 200 70 255
diff --git a/linden/indra/newview/app_settings/colors_base.xml b/linden/indra/newview/app_settings/colors_base.xml
new file mode 100644
index 0000000..2ef8908
--- /dev/null
+++ b/linden/indra/newview/app_settings/colors_base.xml
@@ -0,0 +1,166 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<settings version = "101">
3
4<!-- Color of the names over avatar heads -->
5<AvatarNameColor value="251, 175, 93, 255"/>
6
7<BalanceTextColor value="0, 255, 0, 255"/>
8
9<!-- These are "blended" with the button graphics, and hence should -->
10<!-- usually be left as opaque white. -->
11<ButtonColor value="255, 255, 255, 255"/>
12<ButtonImageColor value="255, 255, 255, 255"/>
13
14<!-- Text labels for buttons, like the "OK" text -->
15<ButtonLabelColor value="220, 220, 220, 255"/>
16<ButtonLabelSelectedColor value="220, 220, 220, 255"/>
17<ButtonLabelDisabledColor value="147, 169, 213, 200"/>
18<ButtonLabelSelectedDisabledColor value="164, 190, 237, 200"/>
19
20<ButtonSelectedBgColor value="62, 62, 62, 255"/>
21<ButtonSelectedColor value="255, 255, 255, 255"/>
22<ButtonUnselectedBgColor value="62, 62, 62, 255"/>
23<ButtonUnselectedFgColor value="255, 255, 255, 255"/>
24<ButtonBorderColor value="238, 156, 0, 255"/>
25
26<!-- Chat History dialog -->
27<ChatHistoryBgColor value="0, 0, 0, 0"/>
28<ChatHistoryTextColor value="255, 255, 255, 255"/>
29
30<!-- The floater buttons (like the close box) are white images that receive this color. -->
31<FloaterButtonImageColor value="239, 156, 0, 255"/>
32
33<!-- The drop shadow behind windows and menus. -->
34<!-- The button one is baked into the graphic. -->
35<ColorDropShadow value="0, 0, 0, 200"/>
36<!-- Background color for unfocused floaters -->
37<DefaultBackgroundColor value="62, 62, 62, 140"/>
38<DefaultHighlightDark value="26, 26, 26, 255"/>
39<DefaultHighlightLight value="115, 132, 155, 255"/>
40<DefaultShadowDark value="26, 26, 26, 255"/>
41<DefaultShadowLight value="0, 0, 0, 255"/>
42
43<!-- Color of the rectangle around entry fields with keyboard focus. -->
44<FocusColor value="238, 156, 0, 255"/>
45<FloaterFocusBorderColor value="0, 0, 0, 80"/>
46<FloaterUnfocusBorderColor value="0, 0, 0, 80"/>
47<TitleBarFocusColor value="255, 255, 255, 30" />
48
49<!-- Edit mode grid -->
50<GridFocusPointColor value="255, 255, 255, 128"/>
51<GridlineColor value="255, 255, 255, 255"/>
52<GridlineBGColor value="235, 235, 255, 200"/>
53<GridlineShadowColor value="0, 0, 0, 80"/>
54
55<HealthTextColor value="255, 255, 255, 255"/>
56
57<HelpBgColor value="200, 209, 204, 255"/>
58<HelpFgColor value="0, 0, 0, 255"/>
59
60<HelpScrollTrackColor value="183, 184, 188, 255"/>
61<HelpScrollThumbColor value="80, 96, 124, 255"/>
62<HelpScrollHighlightColor value="115, 132, 155, 255"/>
63<HelpScrollShadowColor value="0, 0, 0, 255"/>
64
65
66<LabelDisabledColor value="147, 169, 213, 77"/>
67<LabelSelectedColor value="255, 255, 255, 255"/>
68<LabelSelectedDisabledColor value="164, 190, 237, 128"/>
69<LabelTextColor value="147, 169, 213, 255"/>
70
71<MapAutopilotColor value="255, 128, 0, 255"/>
72
73<!-- Menus on the top of the screen -->
74<MenuBarBgColor value="62, 62, 62, 255"/>
75<MenuBarGodBgColor value="62, 128, 62, 255"/>
76<MenuNonProductionBgColor value="128, 0, 0, 255"/>
77<MenuNonProductionGodBgColor value="0,128,0,255"/>
78<MenuDefaultBgColor value="0, 0, 0, 255"/>
79<MenuItemDisabledColor value="133, 133, 164, 128"/>
80<MenuItemEnabledColor value="255, 255, 255, 255"/>
81<MenuItemHighlightBgColor value="183, 184, 188, 100"/>
82<MenuItemHighlightFgColor value="255, 255, 255, 255"/>
83<MenuPopupBgColor value="0, 0, 0, 255"/>
84
85<!-- Colors for the Mini-Map -->
86<NetMapBackgroundColor value="0, 0, 0, 77"/>
87<NetMapYouOwnAboveWater value="0, 255, 255, 255"/>
88<NetMapYouOwnBelowWater value="0, 200, 200, 255"/>
89<NetMapGroupOwnAboveWater value="255, 0, 255, 255"/>
90<NetMapGroupOwnBelowWater value="200, 0, 200, 255"/>
91<NetMapOtherOwnAboveWater value="60, 60, 60, 255"/>
92<NetMapOtherOwnBelowWater value="30, 30, 30, 255"/>
93
94<!-- Notify boxes are the slide-down notifications at the -->
95<!-- top-right of the screen. -->
96<NotifyBoxColor value="58, 147, 242, 255"/>
97<NotifyTextColor value="0, 0, 0, 255"/>
98<!-- Background color of focused floaters -->
99<FocusBackgroundColor value="62, 62, 62, 255"/>
100<GroupNotifyBoxColor value="70, 170, 255, 255"/>
101
102<!-- Menu that spawns on right-click -->
103<PieMenuBgColor value="62, 62, 62, 150"/>
104<PieMenuLineColor value="0, 0, 0, 128"/>
105<PieMenuSelectedColor value="183, 184, 188, 77"/>
106
107<!-- Colors for property lines and land ownership overlay -->
108<PropertyColorAvail value="0, 0, 0, 0"/>
109<PropertyColorGroup value="0, 184, 184, 102"/>
110<PropertyColorOther value="255, 0, 0, 102"/>
111<PropertyColorSelf value="0, 255, 0, 102"/>
112<PropertyColorForSale value="255, 128, 0, 102"/>
113<!-- match the color on the world map -->
114<PropertyColorAuction value="128, 0, 255, 102"/>
115
116<ScrollBgReadOnlyColor value="200, 209, 204, 255"/>
117<ScrollBgWriteableColor value="200, 209, 204, 255"/>
118<ScrollBGStripeColor value="100, 100, 100, 40"/>
119<ScrollDisabledColor value="128, 128, 128, 204"/>
120<ScrollSelectedBGColor value="100, 100, 188, 150"/>
121<ScrollSelectedFGColor value="0, 0, 0, 204"/>
122<ScrollUnselectedColor value="0, 0, 0, 204"/>
123<ScrollHighlightedColor value="183, 184, 188, 128"/>
124<ScrollbarThumbColor value="60, 76, 124, 255"/>
125<ScrollbarTrackColor value="153, 154, 158, 255"/>
126
127<!-- Outline for selected objects in world -->
128<SilhouetteParentColor value="255, 255, 0, 255"/>
129<SilhouetteChildColor value="32, 106, 196, 255"/>
130<HighlightParentColor value="171, 212, 245, 255"/>
131<HighlightChildColor value="171, 212, 245, 255"/>
132<HighlightInspectColor value="255, 0, 255, 255"/>
133
134<!-- For "context" highlighting, i.e. pie menu -->
135<ContextSilhouetteColor value="239, 156, 0, 255"/>
136
137<!-- Horizontal sliders, as in the audio preferences -->
138<SliderDisabledThumbColor value="0, 0, 0, 255"/>
139<SliderThumbCenterColor value="183, 184, 188, 255"/>
140<SliderThumbOutlineColor value="0, 0, 0, 255"/>
141<SliderTrackColor value="30, 30, 30, 255"/>
142
143<!-- Text field background when receiving input (focused) -->
144<TextBgFocusColor value="200, 209, 204, 255"/>
145<!-- Text field background when read-only -->
146<TextBgReadOnlyColor value="62, 62, 62, 160"/>
147<!-- Text field background when not receiving input (unfocused) -->
148<TextBgWriteableColor value="200, 209, 204, 230"/>
149<TextCursorColor value="0, 0, 0, 255"/>
150<TextFgColor value="0, 0, 0, 255"/>
151<TextFgReadOnlyColor value="255, 255, 255, 200"/>
152<TextFgTentativeColor value="0, 0, 0, 128"/>
153<TextEmbeddedItemReadOnlyColor value="58, 147, 242, 255"/>
154<TextEmbeddedItemColor value="0, 0, 128, 255"/>
155<ScriptBgReadOnlyColor value="100, 100, 100, 255"/>
156
157
158<!-- Pop-up tips on UI elements and in-world objects -->
159<ToolTipBgColor value="183, 184, 188, 200"/>
160<ToolTipBorderColor value="171, 212, 245, 255"/>
161<ToolTipTextColor value="0, 0, 0, 255"/>
162
163
164<FilterBackgroundColor value="0, 0, 20, 255"/>
165<FilterTextColor value="255, 200, 70, 255"/>
166</settings>
diff --git a/linden/indra/newview/app_settings/grass.xml b/linden/indra/newview/app_settings/grass.xml
new file mode 100644
index 0000000..7cc29fa
--- /dev/null
+++ b/linden/indra/newview/app_settings/grass.xml
@@ -0,0 +1,47 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<grass_defs>
3 <grass
4 name="Grass 0"
5 species_id="0"
6 texture_name="grass_texture_2.tga"
7 blade_size_x="1.35"
8 blade_size_y="1.35"
9 />
10 <grass
11 name="Grass 1"
12 species_id="1"
13 texture_name="grass_texture_1.tga"
14 blade_size_x="1.0"
15 blade_size_y="0.66"
16 />
17 <grass
18 name="Grass 2"
19 species_id="2"
20 texture_name="grass_texture_2.tga"
21 blade_size_x="1.8"
22 blade_size_y="1.8"
23 />
24 <grass
25 name="Grass 3"
26 species_id="3"
27 texture_name="grass_texture_3.tga"
28 blade_size_x="1.0"
29 blade_size_y="1.0"
30 />
31 <grass
32 name="Grass 4"
33 species_id="4"
34 texture_name="grass_texture_4.tga"
35 blade_size_x="2.25"
36 blade_size_y="2.25"
37 />
38 <grass
39 name="undergrowth_1"
40 species_id="5"
41 texture_id="8f458549-173b-23ff-d4ff-bfaa5ea2371b"
42 blade_size_x="2.0"
43 blade_size_y="2.0"
44 />
45
46
47</grass_defs>
diff --git a/linden/indra/newview/app_settings/keys.ini b/linden/indra/newview/app_settings/keys.ini
new file mode 100644
index 0000000..b7fc6f9
--- /dev/null
+++ b/linden/indra/newview/app_settings/keys.ini
@@ -0,0 +1,317 @@
1# keys.ini
2#
3# keyboard binding initialization
4#
5# comments must have # in the first column
6# blank lines OK
7#
8# Format:
9# mode key mask function
10#
11# mode must be one of FIRST_PERSON, THIRD_PERSON, EDIT, EDIT_AVATAR, or CONVERSATION
12# key must be upper case, or SPACE, HOME, END, PGUP, PGDN, LEFT, RIGHT, UP, DOWN,
13# or one of ,.;'[]
14# mask must be NONE, SHIFT, ALT, ALT_SHIFT.
15# Control is reserved for user commands.
16# function must be a function named in llkeyboard.cpp
17
18FIRST_PERSON A NONE slide_left
19FIRST_PERSON D NONE slide_right
20FIRST_PERSON W NONE push_forward
21FIRST_PERSON S NONE push_backward
22FIRST_PERSON E NONE jump
23FIRST_PERSON C NONE push_down
24FIRST_PERSON F NONE toggle_fly
25
26FIRST_PERSON LEFT NONE slide_left
27FIRST_PERSON RIGHT NONE slide_right
28FIRST_PERSON UP NONE push_forward
29FIRST_PERSON DOWN NONE push_backward
30FIRST_PERSON PGUP NONE jump
31FIRST_PERSON PGDN NONE push_down
32FIRST_PERSON HOME NONE toggle_fly
33
34FIRST_PERSON PAD_LEFT NONE slide_left
35FIRST_PERSON PAD_RIGHT NONE slide_right
36FIRST_PERSON PAD_UP NONE push_forward
37FIRST_PERSON PAD_DOWN NONE push_backward
38FIRST_PERSON PAD_PGUP NONE jump
39FIRST_PERSON PAD_PGDN NONE push_down
40FIRST_PERSON PAD_HOME NONE toggle_fly
41FIRST_PERSON PAD_CENTER NONE stop_moving
42FIRST_PERSON PAD_ENTER NONE start_chat
43
44FIRST_PERSON A SHIFT slide_left
45FIRST_PERSON D SHIFT slide_right
46FIRST_PERSON W SHIFT push_forward
47FIRST_PERSON S SHIFT push_backward
48FIRST_PERSON E SHIFT jump
49FIRST_PERSON C SHIFT push_down
50FIRST_PERSON F SHIFT toggle_fly
51
52FIRST_PERSON SPACE NONE stop_moving
53FIRST_PERSON ENTER NONE start_chat
54
55FIRST_PERSON LEFT SHIFT slide_left
56FIRST_PERSON RIGHT SHIFT slide_right
57FIRST_PERSON UP SHIFT push_forward
58FIRST_PERSON DOWN SHIFT push_backward
59FIRST_PERSON PGUP SHIFT jump
60FIRST_PERSON PGDN SHIFT push_down
61
62FIRST_PERSON PAD_LEFT SHIFT slide_left
63FIRST_PERSON PAD_RIGHT SHIFT slide_right
64FIRST_PERSON PAD_UP SHIFT push_forward
65FIRST_PERSON PAD_DOWN SHIFT push_backward
66FIRST_PERSON PAD_PGUP SHIFT jump
67FIRST_PERSON PAD_PGDN SHIFT push_down
68FIRST_PERSON PAD_HOME SHIFT toggle_fly
69FIRST_PERSON PAD_ENTER SHIFT start_chat
70
71THIRD_PERSON A NONE turn_left
72THIRD_PERSON D NONE turn_right
73THIRD_PERSON A SHIFT slide_left
74THIRD_PERSON D SHIFT slide_right
75THIRD_PERSON W NONE push_forward
76THIRD_PERSON S NONE push_backward
77THIRD_PERSON W SHIFT push_forward
78THIRD_PERSON S SHIFT push_backward
79THIRD_PERSON E NONE jump
80THIRD_PERSON C NONE push_down
81THIRD_PERSON E SHIFT jump
82THIRD_PERSON C SHIFT push_down
83
84THIRD_PERSON F NONE toggle_fly
85THIRD_PERSON F SHIFT toggle_fly
86
87THIRD_PERSON SPACE NONE stop_moving
88THIRD_PERSON ENTER NONE start_chat
89
90THIRD_PERSON LEFT NONE turn_left
91THIRD_PERSON LEFT SHIFT slide_left
92THIRD_PERSON RIGHT NONE turn_right
93THIRD_PERSON RIGHT SHIFT slide_right
94THIRD_PERSON UP NONE push_forward
95THIRD_PERSON DOWN NONE push_backward
96THIRD_PERSON UP SHIFT push_forward
97THIRD_PERSON DOWN SHIFT push_backward
98THIRD_PERSON PGUP NONE jump
99THIRD_PERSON PGDN NONE push_down
100THIRD_PERSON PGUP SHIFT jump
101THIRD_PERSON PGDN SHIFT push_down
102THIRD_PERSON HOME SHIFT toggle_fly
103THIRD_PERSON HOME NONE toggle_fly
104
105THIRD_PERSON PAD_LEFT NONE turn_left
106THIRD_PERSON PAD_LEFT SHIFT slide_left
107THIRD_PERSON PAD_RIGHT NONE turn_right
108THIRD_PERSON PAD_RIGHT SHIFT slide_right
109THIRD_PERSON PAD_UP NONE push_forward
110THIRD_PERSON PAD_DOWN NONE push_backward
111THIRD_PERSON PAD_UP SHIFT push_forward
112THIRD_PERSON PAD_DOWN SHIFT push_backward
113THIRD_PERSON PAD_PGUP NONE jump
114THIRD_PERSON PAD_PGDN NONE push_down
115THIRD_PERSON PAD_PGUP SHIFT jump
116THIRD_PERSON PAD_PGDN SHIFT push_down
117THIRD_PERSON PAD_HOME NONE toggle_fly
118THIRD_PERSON PAD_HOME SHIFT toggle_fly
119THIRD_PERSON PAD_CENTER NONE stop_moving
120THIRD_PERSON PAD_CENTER SHIFT stop_moving
121THIRD_PERSON PAD_ENTER NONE start_chat
122THIRD_PERSON PAD_ENTER SHIFT start_chat
123
124# Camera controls in third person on Alt
125THIRD_PERSON LEFT ALT spin_around_cw
126THIRD_PERSON RIGHT ALT spin_around_ccw
127THIRD_PERSON UP ALT move_forward
128THIRD_PERSON DOWN ALT move_backward
129THIRD_PERSON PGUP ALT spin_over
130THIRD_PERSON PGDN ALT spin_under
131
132THIRD_PERSON A ALT spin_around_cw
133THIRD_PERSON D ALT spin_around_ccw
134THIRD_PERSON W ALT move_forward
135THIRD_PERSON S ALT move_backward
136THIRD_PERSON E ALT spin_over
137THIRD_PERSON C ALT spin_under
138
139THIRD_PERSON PAD_LEFT ALT spin_around_cw
140THIRD_PERSON PAD_RIGHT ALT spin_around_ccw
141THIRD_PERSON PAD_UP ALT move_forward
142THIRD_PERSON PAD_DOWN ALT move_backward
143THIRD_PERSON PAD_PGUP ALT spin_over
144THIRD_PERSON PAD_PGDN ALT spin_under
145THIRD_PERSON PAD_ENTER ALT start_chat
146
147# mimic alt zoom behavior with keyboard only
148THIRD_PERSON A CTL_ALT spin_around_cw
149THIRD_PERSON D CTL_ALT spin_around_ccw
150THIRD_PERSON W CTL_ALT spin_over
151THIRD_PERSON S CTL_ALT spin_under
152THIRD_PERSON E CTL_ALT spin_over
153THIRD_PERSON C CTL_ALT spin_under
154
155THIRD_PERSON LEFT CTL_ALT spin_around_cw
156THIRD_PERSON RIGHT CTL_ALT spin_around_ccw
157THIRD_PERSON UP CTL_ALT spin_over
158THIRD_PERSON DOWN CTL_ALT spin_under
159THIRD_PERSON PGUP CTL_ALT spin_over
160THIRD_PERSON PGDN CTL_ALT spin_under
161
162THIRD_PERSON PAD_LEFT CTL_ALT spin_around_cw
163THIRD_PERSON PAD_RIGHT CTL_ALT spin_around_ccw
164THIRD_PERSON PAD_UP CTL_ALT spin_over
165THIRD_PERSON PAD_DOWN CTL_ALT spin_under
166THIRD_PERSON PAD_PGUP CTL_ALT spin_over
167THIRD_PERSON PAD_PGDN CTL_ALT spin_under
168THIRD_PERSON PAD_ENTER CTL_ALT start_chat
169
170# Therefore pan on Alt-Shift
171THIRD_PERSON A CTL_ALT_SHIFT pan_left
172THIRD_PERSON D CTL_ALT_SHIFT pan_right
173THIRD_PERSON W CTL_ALT_SHIFT pan_up
174THIRD_PERSON S CTL_ALT_SHIFT pan_down
175
176THIRD_PERSON LEFT CTL_ALT_SHIFT pan_left
177THIRD_PERSON RIGHT CTL_ALT_SHIFT pan_right
178THIRD_PERSON UP CTL_ALT_SHIFT pan_up
179THIRD_PERSON DOWN CTL_ALT_SHIFT pan_down
180
181THIRD_PERSON PAD_LEFT CTL_ALT_SHIFT pan_left
182THIRD_PERSON PAD_RIGHT CTL_ALT_SHIFT pan_right
183THIRD_PERSON PAD_UP CTL_ALT_SHIFT pan_up
184THIRD_PERSON PAD_DOWN CTL_ALT_SHIFT pan_down
185THIRD_PERSON PAD_ENTER CTL_ALT_SHIFT start_chat
186
187# Basic editing camera control
188EDIT A NONE spin_around_cw
189EDIT D NONE spin_around_ccw
190EDIT W NONE move_forward
191EDIT S NONE move_backward
192EDIT E NONE spin_over
193EDIT C NONE spin_under
194EDIT ENTER NONE start_chat
195EDIT PAD_ENTER NONE start_chat
196
197EDIT LEFT NONE spin_around_cw
198EDIT RIGHT NONE spin_around_ccw
199EDIT UP NONE move_forward
200EDIT DOWN NONE move_backward
201EDIT PGUP NONE spin_over
202EDIT PGDN NONE spin_under
203
204EDIT A SHIFT pan_left
205EDIT D SHIFT pan_right
206EDIT W SHIFT pan_up
207EDIT S SHIFT pan_down
208
209EDIT LEFT SHIFT pan_left
210EDIT RIGHT SHIFT pan_right
211EDIT UP SHIFT pan_up
212EDIT DOWN SHIFT pan_down
213
214# Walking works with ALT held down.
215EDIT A ALT slide_left
216EDIT D ALT slide_right
217EDIT W ALT push_forward
218EDIT S ALT push_backward
219EDIT E ALT jump
220EDIT C ALT push_down
221
222EDIT LEFT ALT slide_left
223EDIT RIGHT ALT slide_right
224EDIT UP ALT push_forward
225EDIT DOWN ALT push_backward
226EDIT PGUP ALT jump
227EDIT PGDN ALT push_down
228EDIT HOME ALT toggle_fly
229
230EDIT PAD_LEFT ALT slide_left
231EDIT PAD_RIGHT ALT slide_right
232EDIT PAD_UP ALT push_forward
233EDIT PAD_DOWN ALT push_backward
234EDIT PAD_PGUP ALT jump
235EDIT PAD_PGDN ALT push_down
236EDIT PAD_ENTER ALT start_chat
237
238SITTING LEFT ALT spin_around_cw
239SITTING RIGHT ALT spin_around_ccw
240SITTING UP ALT move_forward
241SITTING DOWN ALT move_backward
242SITTING PGUP ALT spin_over
243SITTING PGDN ALT spin_under
244
245SITTING A NONE spin_around_cw_sitting
246SITTING D NONE spin_around_ccw_sitting
247SITTING W NONE move_forward_sitting
248SITTING S NONE move_backward_sitting
249SITTING E NONE spin_over_sitting
250SITTING C NONE spin_under_sitting
251
252SITTING LEFT NONE spin_around_cw_sitting
253SITTING RIGHT NONE spin_around_ccw_sitting
254SITTING UP NONE move_forward_sitting
255SITTING DOWN NONE move_backward_sitting
256SITTING PGUP NONE spin_over_sitting
257SITTING PGDN NONE spin_under_sitting
258
259SITTING PAD_LEFT NONE spin_around_cw_sitting
260SITTING PAD_RIGHT NONE spin_around_ccw_sitting
261SITTING PAD_UP NONE move_forward_sitting
262SITTING PAD_DOWN NONE move_backward_sitting
263SITTING PAD_PGUP NONE spin_over_sitting
264SITTING PAD_PGDN NONE spin_under_sitting
265SITTING PAD_CENTER NONE stop_moving
266SITTING PAD_ENTER NONE start_chat
267
268# these are for passing controls when sitting on vehicles
269SITTING A SHIFT slide_left
270SITTING D SHIFT slide_right
271SITTING LEFT SHIFT slide_left
272SITTING RIGHT SHIFT slide_right
273
274SITTING PAD_LEFT SHIFT slide_left
275SITTING PAD_RIGHT SHIFT slide_right
276SITTING PAD_ENTER SHIFT start_chat
277
278# pan on Alt-Shift
279SITTING A CTL_ALT_SHIFT pan_left
280SITTING D CTL_ALT_SHIFT pan_right
281SITTING W CTL_ALT_SHIFT pan_up
282SITTING S CTL_ALT_SHIFT pan_down
283
284SITTING LEFT CTL_ALT_SHIFT pan_left
285SITTING RIGHT CTL_ALT_SHIFT pan_right
286SITTING UP CTL_ALT_SHIFT pan_up
287SITTING DOWN CTL_ALT_SHIFT pan_down
288
289SITTING PAD_LEFT CTL_ALT_SHIFT pan_left
290SITTING PAD_RIGHT CTL_ALT_SHIFT pan_right
291SITTING PAD_UP CTL_ALT_SHIFT pan_up
292SITTING PAD_DOWN CTL_ALT_SHIFT pan_down
293SITTING PAD_ENTER CTL_ALT_SHIFT start_chat
294
295SITTING ENTER NONE start_chat
296
297# Avatar editing camera controls
298EDIT_AVATAR A NONE edit_avatar_spin_cw
299EDIT_AVATAR D NONE edit_avatar_spin_ccw
300EDIT_AVATAR W NONE edit_avatar_move_forward
301EDIT_AVATAR S NONE edit_avatar_move_backward
302EDIT_AVATAR E NONE edit_avatar_spin_over
303EDIT_AVATAR C NONE edit_avatar_spin_under
304EDIT_AVATAR LEFT NONE edit_avatar_spin_cw
305EDIT_AVATAR RIGHT NONE edit_avatar_spin_ccw
306EDIT_AVATAR UP NONE edit_avatar_move_forward
307EDIT_AVATAR DOWN NONE edit_avatar_move_backward
308EDIT_AVATAR PGUP NONE edit_avatar_spin_over
309EDIT_AVATAR PGDN NONE edit_avatar_spin_under
310EDIT_AVATAR ENTER NONE start_chat
311EDIT_AVATAR PAD_LEFT NONE edit_avatar_spin_cw
312EDIT_AVATAR PAD_RIGHT NONE edit_avatar_spin_ccw
313EDIT_AVATAR PAD_UP NONE edit_avatar_move_forward
314EDIT_AVATAR PAD_DOWN NONE edit_avatar_move_backward
315EDIT_AVATAR PAD_PGUP NONE edit_avatar_spin_over
316EDIT_AVATAR PAD_PGDN NONE edit_avatar_spin_under
317EDIT_AVATAR PAD_ENTER NONE start_chat
diff --git a/linden/indra/newview/app_settings/keywords.ini b/linden/indra/newview/app_settings/keywords.ini
new file mode 100644
index 0000000..0545c38
--- /dev/null
+++ b/linden/indra/newview/app_settings/keywords.ini
@@ -0,0 +1,513 @@
1llkeywords version 2
2
3# sections
4[word .5, .1, .3]
5default Name of default state that all scripts must have
6state Keyword to indicate state block or state transition
7
8# data types
9[word .1, .3, .1]
10integer Integer type
11float Floating-point type
12string String type
13key Key type. Use NULL_KEY to test for empty keys.
14vector Vector type of 3 floats. Used to represent 3D motion, Euler angles, and color.:Access components by .x, .y. or .z
15rotation Rotation type of 4 floats. Used to represent rotation.:Access components by .x, .y., .z, or .w
16list List of various data types
17
18# events
19[word 0, .3, .5]
20state_entry state_entry():Triggered on any state transition and startup
21state_exit state_exit():Triggered on any state transition
22touch_start touch_start(integer num_detected):Triggered by the start of agent clicking on task
23touch touch(integer num_detected):Triggered while agent is clicking on task
24touch_end touch_end(integer num_detected):Triggered when agent stops clicking on task
25collision_start collision_start(integer num_detected):Triggered when task starts colliding with another task
26collision collision(integer num_detected):Triggered while task is colliding with another task
27collision_end collision_end(integer num_detected):Triggered when task stops colliding with another task
28land_collision_start land_collision_start(vector pos):Triggered when task starts colliding with land
29land_collision land_collision(vector pos):Triggered when task is colliding with land
30land_collision_end land_collision_end(vector pos):Triggered when task stops colliding with land
31timer timer():Result of the llSetTimerEvent library function call.
32listen listen(integer channel, string name, key id, string message):Result of the llListen library function call
33sensor sensor(integer num_detected):Result of the llSensor library function call
34no_sensor no_sensor():Result of the llSensor library function call
35control control(key id, integer level, integer edge):Result of llTakeControls library function call
36at_target at_target(integer tnum, vector targetpos, vector ourpos):Result of llTarget library function call
37not_at_target not_at_target():Result of llTarget library function call
38at_rot_target at_rot_target(integer tnum, rotation targetrot, rotation ourrot):Result of LLRotTarget library function call
39not_at_rot_target not_at_rot_target():Result of LLRotTarget library function call
40money money(key id, integer amount):Triggered when money is given to task
41email email(string time, string address, string subj, string message, integer num_left):Triggered when task receives email
42run_time_permissions run_time_permissions(integer perm):Triggered when an agent grants run time permissions to task
43attach attach(key id):Triggered when an agent attaches or detaches from agent
44dataserver dataserver(key queryid, string data):Triggered when task receives asynchronous data
45moving_start moving_start():Triggered when task begins moving
46moving_end moving_end():Triggered when task stops moving
47on_rez on_rez(integer start_param):Triggered when task is rezed in from inventory or another task
48object_rez object_rez(key id):Triggered when task rezes in another task
49link_message link_message(integer sender_num, integer num, string str, key id):Triggered when task receives a link message via LLMessageLinked library function call
50changed changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT)
51remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY)
52http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests
53
54# integer constants
55[word .1, .1, .5]
56TRUE Integer constant for Boolean operations
57FALSE Integer constant for Boolean operations
58STATUS_PHYSICS Passed in the llSetStatus library function. If TRUE, object moves physically
59STATUS_PHANTOM Passed in the llSetStatus library function. If TRUE, object doesn't collide with other objects
60STATUS_ROTATE_X Passed in the llSetStatus library function. If FALSE, object doesn't rotate around local X axis
61STATUS_ROTATE_Y Passed in the llSetStatus library function. If FALSE, object doesn't rotate around local Y axis
62STATUS_ROTATE_Z Passed in the llSetStatus library function. If FALSE, object doesn't rotate around local Z axis
63STATUS_SANDBOX Passed in the llSetStatus library function. If TRUE, object can't cross region boundaries or move more than 10 meters from its start location
64STATUS_BLOCK_GRAB Passed in the llSetStatus library function. If TRUE, object can't be grabbed and physically dragged
65STATUS_DIE_AT_EDGE Passed in the llSetStatus library function. If TRUE, objects that reach the edge of the world just die:rather than teleporting back to the owner
66STATUS_RETURN_AT_EDGE Passed in the llSetStatus library function. If TRUE, script rezzed objects that reach the edge of the world:are returned rather than killed:STATUS_RETURN_AT_EDGE trumps STATUS_DIE_AT_EDGE if both are set
67STATUS_CAST_SHADOWS Passed in the llSetStatus library function. If TRUE, object casts shadows on other objects
68AGENT Passed in llSensor library function to look for other Agents
69ACTIVE Passed in llSensor library function to look for moving objects
70PASSIVE Passed in llSensor library function to look for objects that aren't moving
71SCRIPTED Passed in llSensor library function to look for scripted objects
72CONTROL_FWD Passed to llTakeControls library function and used control event handler to test for agent forward control
73CONTROL_BACK Passed to llTakeControls library function and used control event handler to test for agent back control
74CONTROL_LEFT Passed to llTakeControls library function and used control event handler to test for agent left control
75CONTROL_RIGHT Passed to llTakeControls library function and used control event handler to test for agent right control
76CONTROL_ROT_LEFT Passed to llTakeControls library function and used control event handler to test for agent rotate left control
77CONTROL_ROT_RIGHT Passed to llTakeControls library function and used control event handler to test for agent rotate right control
78CONTROL_UP Passed to llTakeControls library function and used control event handler to test for agent up control
79CONTROL_DOWN Passed to llTakeControls library function and used control event handler to test for agent down control
80CONTROL_LBUTTON Passed to llTakeControls library function and used control event handler to test for agent left button control
81CONTROL_ML_LBUTTON Passed to llTakeControls library function and used control event handler to test for agent left button control with the agent in mouse look
82PERMISSION_DEBIT Passed to llRequestPermissions library function to request permission to take money from agent's account
83PERMISSION_TAKE_CONTROLS Passed to llRequestPermissions library function to request permission to take agent's controls
84# PERMISSION_REMAP_CONTROLS Passed to llRequestPermissions library function to request permission to remap agent's controls (not implemented yet)
85PERMISSION_TRIGGER_ANIMATION Passed to llRequestPermissions library function to request permission to trigger animation on agent
86PERMISSION_ATTACH Passed to llRequestPermissions library function to request permission to attach/detach from agent
87# PERMISSION_RELEASE_OWNERSHIP Passed to llRequestPermissions library function to request permission to release ownership (not implemented)
88PERMISSION_CHANGE_LINKS Passed to llRequestPermissions library function to request permission to change links
89# PERMISSION_CHANGE_JOINTS Passed to llRequestPermissions library function to request permission to change joints (not implemented)
90# PERMISSION_CHANGE_PERMISSIONS Passed to llRequestPermissions library function to request permission to change permissions
91PERMISSION_TRACK_CAMERA Passed to llRequestPermissions library function to request permission to track agent's camera
92PERMISSION_CONTROL_CAMERA Passed to llRequestPermissions library function to request permission to change agent's camera
93
94DEBUG_CHANNEL Chat channel reserved for debug and error messages from scripts
95PUBLIC_CHANNEL Chat channel that broadcasts to all nearby users
96
97AGENT_FLYING Returned by llGetAgentInfo if the Agent is flying
98AGENT_ATTACHMENTS Returned by llGetAgentInfo if the Agent has attachments
99AGENT_SCRIPTED Returned by llGetAgentInfo if the Agent has scripted attachments
100AGENT_SITTING Returned by llGetAgentInfo if the Agent is sitting
101AGENT_ON_OBJECT Returned by llGetAgentInfo if the Agent is sitting on an object
102AGENT_MOUSELOOK Returned by llGetAgentInfo if the Agent is in mouselook
103AGENT_AWAY Returned by llGetAgentInfo if the Agent is in away mode
104AGENT_WALKING Returned by llGetAgentInfo if the Agent is walking
105AGENT_IN_AIR Returned by llGetAgentInfo if the Agent is in the air
106AGENT_TYPING Returned by llGetAgentInfo if the Agent is typing
107AGENT_CROUCHING Returned by llGetAgentInfo if the Agent is crouching
108AGENT_BUSY Returned by llGetAgentInfo if the Agent is busy
109AGENT_ALWAYS_RUN Returned by llGetAgentInfo if the Agent has 'Always Run' enabled
110
111PSYS_PART_FLAGS
112PSYS_PART_START_COLOR
113PSYS_PART_START_ALPHA
114PSYS_PART_START_SCALE
115PSYS_PART_END_COLOR
116PSYS_PART_END_ALPHA
117PSYS_PART_END_SCALE
118PSYS_PART_MAX_AGE
119
120PSYS_PART_BOUNCE_MASK
121PSYS_PART_WIND_MASK
122PSYS_PART_INTERP_COLOR_MASK
123PSYS_PART_INTERP_SCALE_MASK
124PSYS_PART_FOLLOW_SRC_MASK
125PSYS_PART_FOLLOW_VELOCITY_MASK
126PSYS_PART_TARGET_POS_MASK
127PSYS_PART_EMISSIVE_MASK
128PSYS_PART_TARGET_LINEAR_MASK
129
130PSYS_SRC_PATTERN
131PSYS_SRC_INNERANGLE Deprecated -- Use PSYS_SRC_ANGLE_BEGIN
132PSYS_SRC_OUTERANGLE Deprecated -- Use PSYS_SRC_ANGLE_END
133PSYS_SRC_ANGLE_BEGIN
134PSYS_SRC_ANGLE_END
135PSYS_SRC_BURST_RATE
136PSYS_SRC_BURST_PART_COUNT
137PSYS_SRC_BURST_RADIUS
138PSYS_SRC_BURST_SPEED_MIN
139PSYS_SRC_BURST_SPEED_MAX
140PSYS_SRC_MAX_AGE
141PSYS_SRC_ACCEL
142PSYS_SRC_TEXTURE
143PSYS_SRC_TARGET_KEY
144PSYS_SRC_OMEGA
145
146PSYS_SRC_PATTERN_DROP
147PSYS_SRC_PATTERN_EXPLODE
148PSYS_SRC_PATTERN_ANGLE
149PSYS_SRC_PATTERN_ANGLE_CONE
150PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
151
152# some vehicle params
153VEHICLE_TYPE_NONE
154VEHICLE_TYPE_SLED
155VEHICLE_TYPE_CAR
156VEHICLE_TYPE_BOAT
157VEHICLE_TYPE_AIRPLANE
158VEHICLE_TYPE_BALLOON
159
160VEHICLE_REFERENCE_FRAME Rotation of vehicle axes relative to local frame
161
162VEHICLE_LINEAR_FRICTION_TIMESCALE A vector of timescales for exponential decay of linear velocity along the three vehicle axes
163VEHICLE_ANGULAR_FRICTION_TIMESCALE A vector of timescales for exponential decay of angular velocity about the three vehicle axes
164VEHICLE_LINEAR_MOTOR_DIRECTION The linear velocity that the vehicle will try to achieve
165VEHICLE_LINEAR_MOTOR_OFFSET An offset from the center of mass of the vehicle where the linear motor is applied
166VEHICLE_ANGULAR_MOTOR_DIRECTION The angular velocity that the vehicle will try to achieve
167
168VEHICLE_HOVER_HEIGHT The height the vehicle will try to hover
169VEHICLE_HOVER_EFFICIENCY A slider between 0 (bouncy) and 1 (critically damped) hover behavior
170VEHICLE_HOVER_TIMESCALE The period of time for the vehicle to achieve its hover height
171VEHICLE_BUOYANCY A slider between 0 (no anti-gravity) and 1 (full anti-gravity)
172
173VEHICLE_LINEAR_DEFLECTION_EFFICIENCY A slider between 0 (no deflection) and 1 (maximum strength)
174VEHICLE_LINEAR_DEFLECTION_TIMESCALE The exponential timescale for the vehicle to redirect its velocity to be along its x-axis
175
176VEHICLE_LINEAR_MOTOR_TIMESCALE The exponential timescale for the vehicle to achive its full linear motor velocity
177VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE The exponential timescale for the linear motor's effectiveness to decay toward zero
178
179VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY A slider between 0 (no deflection) and 1 (maximum strength)
180VEHICLE_ANGULAR_DEFLECTION_TIMESCALE The exponential timescale for the vehicle to achieve full angular deflection
181
182VEHICLE_ANGULAR_MOTOR_TIMESCALE The exponential timescale for the vehicle to achive its full angular motor velocity
183VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE The exponential timescale for the angular motor's effectiveness to decay toward zero
184
185VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY A slider between 0 (bouncy) and 1 (critically damped) attraction of vehicle z-axis to world z-axis (vertical)
186VEHICLE_VERTICAL_ATTRACTION_TIMESCALE The exponential timescale for the vehicle to align its z-axis to the world z-axis (vertical)
187
188VEHICLE_BANKING_EFFICIENCY A slider between -1 (leans out of turns), 0 (no banking), and +1 (leans into turns)
189VEHICLE_BANKING_MIX A slider betwen 0 (static banking) and 1 (dynamic banking)
190VEHICLE_BANKING_TIMESCALE The exponential timescale for the banking behavior to take full effect
191
192VEHICLE_FLAG_NO_DEFLECTION_UP Prevents linear deflection along world-z axis
193VEHICLE_FLAG_LIMIT_ROLL_ONLY Removes vertical attraction for changes in vehicle pitch
194VEHICLE_FLAG_HOVER_WATER_ONLY Hover only pays attention to water level
195VEHICLE_FLAG_HOVER_TERRAIN_ONLY Hover only pays attention to terrain height
196VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT Hover only pays attention to global height
197VEHICLE_FLAG_HOVER_UP_ONLY Hover only pushes up
198VEHICLE_FLAG_LIMIT_MOTOR_UP Prevents ground vehicles from motoring into the sky
199VEHICLE_FLAG_MOUSELOOK_STEER Makes vehicle try to turn toward mouselook direction.
200VEHICLE_FLAG_MOUSELOOK_BANK Makes vehicle try to turn toward mouselook direction assuming banking is enabled.
201VEHICLE_FLAG_CAMERA_DECOUPLED Causes the camera look-at axis to NOT move when the vehicle rotates.
202
203CAMERA_PITCH (-45 to 80) (Adjusts the angular amount that the camera aims straight ahead vs. straight down, maintaining the same distance. Analogous to 'incidence'.")
204CAMERA_FOCUS_OFFSET (-10 to 10) A vector that adjusts the position of the camera focus position relative to the subject
205CAMERA_POSITION_LAG (0.0 to 3.0) How much the camera lags as it tries to move towards its 'ideal' position
206CAMERA_FOCUS_LAG (0.0 to 3.0) How much the camera lags as it tries to aim towards the subject
207CAMERA_DISTANCE (0.5 to 10) Sets how far away the camera wants to be from its subject
208CAMERA_BEHINDNESS_ANGLE (0 to 180) Sets the angle in degrees within which the camera is not constrained by changes in subject rotation
209CAMERA_BEHINDNESS_LAG (0.0 to 3.0) Sets how strongly the camera is forced to stay behind the target if outside of behindness angle
210CAMERA_POSITION_THRESHOLD (0.0 to 4.0) Sets the radius of a sphere around the camera's ideal position within which it is not affected by subject motion
211CAMERA_FOCUS_THRESHOLD (0.0 to 4.0) Sets the radius of a sphere around the camera's subject position within which its focus is not affected by subject motion
212CAMERA_ACTIVE (0 or 1) Turns on or off scripted control of the camera
213CAMERA_POSITION Sets the position of the camera
214CAMERA_FOCUS Sets the focus (target position) of the camera
215CAMERA_POSITION_LOCKED (0 or 1) Locks the camera position so it will not move
216CAMERA_FOCUS_LOCKED (0 or 1) Locks the camera focus so it will not move
217
218INVENTORY_TEXTURE Passed to task inventory library functions to reference textures
219INVENTORY_SOUND Passed to task inventory library functions to reference sounds
220INVENTORY_OBJECT Passed to task inventory library functions to reference objects
221INVENTORY_SCRIPT Passed to task inventory library functions to reference scripts
222INVENTORY_LANDMARK Passed to task inventory library functions to reference landmarks
223INVENTORY_CLOTHING Passed to task inventory library functions to reference clothing
224INVENTORY_NOTECARD Passed to task inventory library functions to reference notecards
225INVENTORY_BODYPART Passed to task inventory library functions to reference body parts
226INVENTORY_ANIMATION Passed to task inventory library functions to reference animations
227INVENTORY_GESTURE Passed to task inventory library functions to reference gestures
228INVENTORY_ALL Passed to task inventory library functions to reference all inventory items
229INVENTORY_NONE Returned by llGetInventoryType when no item is found.
230
231ATTACH_CHEST Passed to llAttachToAvatar to attach task to chest
232ATTACH_HEAD Passed to llAttachToAvatar to attach task to head
233ATTACH_LSHOULDER Passed to llAttachToAvatar to attach task to left shoulder
234ATTACH_RSHOULDER Passed to llAttachToAvatar to attach task to right shoulder
235ATTACH_LHAND Passed to llAttachToAvatar to attach task to left hand
236ATTACH_RHAND Passed to llAttachToAvatar to attach task to right hand
237ATTACH_LFOOT Passed to llAttachToAvatar to attach task to left foot
238ATTACH_RFOOT Passed to llAttachToAvatar to attach task to right foot
239ATTACH_BACK Passed to llAttachToAvatar to attach task to back
240ATTACH_PELVIS Passed to llAttachToAvatar to attach task to pelvis
241ATTACH_MOUTH Passed to llAttachToAvatar to attach task to mouth
242ATTACH_CHIN Passed to llAttachToAvatar to attach task to chin
243ATTACH_LEAR Passed to llAttachToAvatar to attach task to left ear
244ATTACH_REAR Passed to llAttachToAvatar to attach task to right ear
245ATTACH_LEYE Passed to llAttachToAvatar to attach task to left eye
246ATTACH_REYE Passed to llAttachToAvatar to attach task to right eye
247ATTACH_NOSE Passed to llAttachToAvatar to attach task to noce
248ATTACH_RUARM Passed to llAttachToAvatar to attach task to right upper arm
249ATTACH_RLARM Passed to llAttachToAvatar to attach task to right lower arm
250ATTACH_LUARM Passed to llAttachToAvatar to attach task to left upper arm
251ATTACH_LLARM Passed to llAttachToAvatar to attach task to left lower arm
252ATTACH_RHIP Passed to llAttachToAvatar to attach task to right hip
253ATTACH_RULEG Passed to llAttachToAvatar to attach task to right upper leg
254ATTACH_RLLEG Passed to llAttachToAvatar to attach task to right lower leg
255ATTACH_LHIP Passed to llAttachToAvatar to attach task to left hip
256ATTACH_LULEG Passed to llAttachToAvatar to attach task to left upper leg
257ATTACH_LLLEG Passed to llAttachToAvatar to attach task to left lower leg
258ATTACH_BELLY Passed to llAttachToAvatar to attach task to belly
259ATTACH_RPEC Passed to llAttachToAvatar to attach task to right pectoral
260ATTACH_LPEC Passed to llAttachToAvatar to attach task to left pectoral
261
262LAND_LEVEL Passed to llModifyLand to level terrain
263LAND_RAISE Passed to llModifyLand to raise terrain
264LAND_LOWER Passed to llModifyLand to lower terrain
265LAND_SMOOTH Passed to llModifyLand to smooth terrain
266LAND_NOISE Passed to llModifyLand to randomize terrain
267LAND_REVERT Passed to llModifyLand to revert terrain toward original state
268LAND_SMALL_BRUSH Passed to llModifyLand to modify small land areas
269LAND_MEDIUM_BRUSH Passed to llModifyLand to modify medium land areas
270LAND_LARGE_BRUSH Passed to llModifyLand to modify large land areas
271
272DATA_PAYINFO Passed to llRequestAgentData to get payment status of an agent
273DATA_ONLINE Passed to llRequestAgentData to determine if agent is online
274DATA_NAME Passed to llRequestAgentData to get full agent name
275DATA_BORN Passed to llRequestAgentData to get born on date as a string
276DATA_RATING Passed to llRequestAgentData to get a comma separated sting of integer ratings
277DATA_SIM_POS Passed to llRequestSimulatorData to get a string (cast to vector) of a simulator's global position
278DATA_SIM_STATUS Passed to llRequestSimulatorData to get the status of a simulator
279DATA_SIM_RATING Passed to llRequestSimulatorData to get the rating of a simulator
280
281PAYMENT_INFO_ON_FILE Used with llRequestAgentData to tell if Agent is of "Payment Info On File" status
282PAYMENT_INFO_USED Used with llRequestAgentData to tell if Agent is of "Payment Info Used" status
283
284ANIM_ON Enable texture animation
285LOOP Loop when animating textures
286REVERSE Animate in the reverse direction
287PING_PONG Animate forward, then reverse.
288SMOOTH Textures slides, instead of stepping
289ROTATE Rotates the texture, instead of using frames
290SCALE Scales the texture, instead of using frames
291
292ALL_SIDES Passed to various texture and color library functions to modify all sides
293
294LINK_SET Passed to various link functions to modify all blocks in the object
295LINK_ROOT Passed to various link functions to modify only the root block (no effect on single block objects)
296LINK_ALL_OTHERS Passed to various link functions to modify all other blocks in the object
297LINK_ALL_CHILDREN Passed to various link functions to modify all child blocks in the object
298LINK_THIS Passed to various link functions to modify only the calling block
299
300CHANGED_INVENTORY Parameter of changed event handler used to indicate change to task's inventory
301CHANGED_COLOR Parameter of changed event handler used to indicate change to task's color
302CHANGED_SHAPE Parameter of changed event handler used to indicate change to task's shape parameters
303CHANGED_SCALE Parameter of changed event handler used to indicate change to task's scale
304CHANGED_TEXTURE Parameter of changed event handler used to indicate change to task's texture
305CHANGED_LINK Parameter of changed event handler used to indicate change to task's link status
306CHANGED_ALLOWED_DROP Parameter of changed event handler used to indicate a user dropped an inventory item:onto task that was allowed only by llAllowInventoryDrop function call
307CHANGED_OWNER Parameter of changed event handler used to indicate change to task's owner ONLY when an object is sold as original or deeded to group
308CHANGED_REGION Parameter of changed event handler used to indicate the region has changed
309CHANGED_TELEPORT Parameter of changed event handler used to indicate teleport has completed
310
311TYPE_INTEGER Indicates that the list entry is holding an integer
312TYPE_FLOAT Indicates that the list entry is holding an float
313TYPE_STRING Indicates that the list entry is holding an string
314TYPE_KEY Indicates that the list entry is holding an key
315TYPE_VECTOR Indicates that the list entry is holding an vector
316TYPE_ROTATION Indicates that the list entry is holding an rotation
317TYPE_INVALID Indicates that this wasn't a valid list entry
318
319
320REMOTE_DATA_CHANNEL Value of event_type in remote_event after successful llOpenRemoteDataChannel
321REMOTE_DATA_REQUEST Value of event_type in remote_event if XML-RPC request is received
322REMOTE_DATA_REPLY Value of event_type in remote_event if XML-RPC reply is received
323
324
325PRIM_TYPE Followed by PRIM_TYPE_BOX, PRIM_TYPE_CYLINDER, PRIM_TYPE_PRISM, PRIM_TYPE_SPHERE,:PRIM_TYPE_TORUS, or PRIM_TYPE_TUBE and their arguments
326PRIM_MATERIAL Sets material to PRIM_MATERIAL_STONE, PRIM_MATERIAL_METAL, PRIM_MATERIAL_GLASS,:PRIM_MATERIAL_WOOD, PRIM_MATERIAL_FLESH, PRIM_MATERIAL_PLASTIC,:PRIM_MATERIAL_RUBBER, or PRIM_MATERIAL_LIGHT
327PRIM_PHYSICS Sets physics to TRUE or FALSE
328PRIM_FLEXIBLE Sets primitive flexibility to TRUE or FALSE
329PRIM_POINT_LIGHT Sets light emission to TRUE or FALSE
330PRIM_TEMP_ON_REZ Sets temporay on rez to TRUE or FALSE
331PRIM_PHANTOM Sets phantom to TRUE or FALSE
332PRIM_CAST_SHADOWS Enables or disables shadow casting for the primitive
333PRIM_POSITION Sets primitive position to a vector position
334PRIM_SIZE Sets primitive size to a vector size
335PRIM_ROTATION Sets primitive rotation
336PRIM_TEXTURE Followed by an integer face, key id, vector repeats, vector offsets,:and float rotation in radians
337PRIM_COLOR Followed by an integer face, vector color, and float alpha
338PRIM_BUMP_SHINY Followed by an integer face, one of PRIM_SHINY_NONE, PRIM_SHINY_LOW,:PRIM_SHINY_MEDIUM, or PRIM_SHINY_HIGH,:and one of PRIM_BUMP_NONE, PRIM_BUMP_BRIGHT, PRIM_BUMP_DARK, etc
339PRIM_FULLBRIGHT Followed by an integer face, and TRUE or FALSE
340PRIM_TEXGEN Followed by an integer face, and one of PRIM_TEXGEN_DEFAULT or PRIM_TEXGEN_PLANAR
341
342PRIM_TYPE_BOX Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear
343PRIM_TYPE_CYLINDER Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear
344PRIM_TYPE_PRISM Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear
345PRIM_TYPE_SPHERE Followed by integer hole shape, vector cut, float hollow, vector twist,:and vector dimple
346PRIM_TYPE_TORUS Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
347PRIM_TYPE_TUBE Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
348PRIM_TYPE_RING Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
349
350PRIM_HOLE_DEFAULT Sets hole type to match the prim type.
351PRIM_HOLE_SQUARE Sets hole type to square.
352PRIM_HOLE_CIRCLE Sets hole type to circle.
353PRIM_HOLE_TRIANGLE Sets hole type to triangle.
354
355PRIM_MATERIAL_STONE Sets material to stone
356PRIM_MATERIAL_METAL Sets material to metal
357PRIM_MATERIAL_GLASS Sets material to glass
358PRIM_MATERIAL_WOOD Sets material to wood
359PRIM_MATERIAL_FLESH Sets material to flesh
360PRIM_MATERIAL_PLASTIC Sets material to plastic
361PRIM_MATERIAL_RUBBER Sets material to rubber
362PRIM_MATERIAL_LIGHT Sets material to light
363
364PRIM_SHINY_NONE No shininess
365PRIM_SHINY_LOW Low shininess
366PRIM_SHINY_MEDIUM Medium shininess
367PRIM_SHINY_HIGH High shininess
368
369PRIM_BUMP_NONE No bump map
370PRIM_BUMP_BRIGHT Generate bump map from highlights
371PRIM_BUMP_DARK Generate bump map from lowlights
372PRIM_BUMP_WOOD Wood bump map
373PRIM_BUMP_BARK Bark bump map
374PRIM_BUMP_BRICKS Brick bump map
375PRIM_BUMP_CHECKER Checker bump map
376PRIM_BUMP_CONCRETE Concrete bump map
377PRIM_BUMP_TILE Tile bump map
378PRIM_BUMP_STONE Stone bump map
379PRIM_BUMP_DISKS Disk bump map
380PRIM_BUMP_GRAVEL Gravel bump map
381PRIM_BUMP_BLOBS Blob bump map
382PRIM_BUMP_SIDING Siding bump map
383PRIM_BUMP_LARGETILE Large tile bump map
384PRIM_BUMP_STUCCO Stucco bump map
385PRIM_BUMP_SUCTION Suction cup bump map
386PRIM_BUMP_WEAVE Weave bump map
387
388PRIM_TEXGEN_DEFAULT Default texture mapping
389PRIM_TEXGEN_PLANAR Planar texture mapping
390
391MASK_BASE Base permissions
392MASK_OWNER Owner permissions
393MASK_GROUP Group permissions
394MASK_EVERYONE Everyone permissions
395MASK_NEXT Next owner permissions
396
397PERM_TRANSFER Transfer permission
398PERM_MODIFY Modify permission
399PERM_COPY Copy permission
400PERM_MOVE Move permission
401PERM_ALL Move/Modify/Copy/Transfer permissions
402
403PARCEL_MEDIA_COMMAND_STOP Stop media stream
404PARCEL_MEDIA_COMMAND_PAUSE Pause media stream
405PARCEL_MEDIA_COMMAND_PLAY Play media stream
406PARCEL_MEDIA_COMMAND_LOOP Loop media stream
407PARCEL_MEDIA_COMMAND_TEXTURE Get or set the parcel's media texture
408PARCEL_MEDIA_COMMAND_URL Get or set the parcel's media url
409PARCEL_MEDIA_COMMAND_TIME Set media stream to specific time
410PARCEL_MEDIA_COMMAND_AGENT Allows media stream commands to apply to only one agent
411PARCEL_MEDIA_COMMAND_UNLOAD Unloads the media stream
412PARCEL_MEDIA_COMMAND_AUTO_ALIGN Auto aligns the media stream to the texture size. May cause a performance hit and loss of some visual quality.
413
414PAY_HIDE Used with llSetPayPrice to hide a button
415PAY_DEFAULT Used with llSetPayPrice to use the default price for a button
416
417LIST_STAT_MAX Used with llListStatistics to find the largest number in a list
418LIST_STAT_MIN Used with llListStatistics to find the smallest number in a list
419LIST_STAT_MEAN Used with llListStatistics to find the mean of the numbers in a list
420LIST_STAT_MEDIAN Used with llListStatistics to find the median of the numbers in a list
421LIST_STAT_STD_DEV Used with llListStatistics to find the standard deviation of the numbers in a list
422LIST_STAT_SUM Used with llListStatistics to find the sum of the numbers in a list
423LIST_STAT_SUM_SQUARES Used with llListStatistics to find the sum of the squares of the numbers in a list
424LIST_STAT_NUM_COUNT Used with llListStatistics to find how many numbers are in a list
425LIST_STAT_GEOMETRIC_MEAN Used with llListStatistics to find the geometric mean of the numbers in a list (all numbers must be > 0)
426LIST_STAT_RANGE Used with llListStatistics to find the range of the numbers in a list
427
428PARCEL_FLAG_ALLOW_FLY Used with llGetParcelFlags to find if a parcel allows flying
429PARCEL_FLAG_ALLOW_GROUP_SCRIPTS Used with llGetParcelFlags to find if a parcel allows group scripts
430PARCEL_FLAG_ALLOW_SCRIPTS Used with llGetParcelFlags to find if a parcel allows outside scripts
431PARCEL_FLAG_ALLOW_LANDMARK Used with llGetParcelFlags to find if a parcel allows landmarks to be created
432PARCEL_FLAG_ALLOW_TERRAFORM Used with llGetParcelFlags to find if a parcel allows anyone to terraform the land
433PARCEL_FLAG_ALLOW_DAMAGE Used with llGetParcelFlags to find if a parcel allows damage
434PARCEL_FLAG_ALLOW_CREATE_OBJECTS Used with llGetParcelFlags to find if a parcel allows anyone to create objects
435PARCEL_FLAG_USE_ACCESS_GROUP Used with llGetParcelFlags to find if a parcel limits access to a group
436PARCEL_FLAG_USE_ACCESS_LIST Used with llGetParcelFlags to find if a parcel limits access to a list of residents
437PARCEL_FLAG_USE_BAN_LIST Used with llGetParcelFlags to find if a parcel uses a ban list
438PARCEL_FLAG_USE_LAND_PASS_LIST Used with llGetParcelFlags to find if a parcel allows passes to be purchased
439PARCEL_FLAG_LOCAL_SOUND_ONLY Used with llGetParcelFlags to find if a parcel restricts spacialized sound to the parcel
440PARCEL_FLAG_RESTRICT_PUSHOBJECT Used with llGetParcelFlags to find if a parcel restricts llPushObject() calls
441
442REGION_FLAG_ALLOW_DAMAGE Used with llGetRegionFlags to find if a region is entirely damage enabled
443REGION_FLAG_FIXED_SUN Used with llGetRegionFlags to find if a region has a fixed sun position
444REGION_FLAG_BLOCK_TERRAFORM Used with llGetRegionFlags to find if a region terraforming disabled
445REGION_FLAG_SANDBOX Used with llGetRegionFlags to find if a region is a sandbox
446REGION_FLAG_DISABLE_COLLISIONS Used with llGetRegionFlags to find if a region has disabled collisions
447REGION_FLAG_DISABLE_PHYSICS Used with llGetRegionFlags to find if a region has disabled physics
448REGION_FLAG_BLOCK_FLY Used with llGetRegionFlags to find if a region blocks flying
449REGION_FLAG_ALLOW_DIRECT_TELEPORT Used with llGetRegionFlags to find if a region allows direct teleports
450REGION_FLAG_RESTRICT_PUSHOBJECT Used with llGetRegionFlags to find if a region restricts llPushObject() calls
451
452HTTP_METHOD Used with llHTTPRequest to specify the method, such as "GET" or "POST"
453HTTP_MIMETYPE Used with llHTTPRequest to specify the MIME type, defaults to "text/plain"
454HTTP_BODY_MAXLENGTH Used with llHTTPRequest to specify the maxium reponse body to return
455HTTP_VERIFY_CERT Used with llHTTPRequest to specify SSL certificate verification
456HTTP_BODY_TRUNCATED Used with http_response to indicate truncation point in bytes
457
458PARCEL_COUNT_TOTAL Used with llGetParcelPrimCount to get the total number of prims on the parcel
459PARCEL_COUNT_OWNER Used with llGetParcelPrimCount to get the number of prims on the parcel owned by the owner
460PARCEL_COUNT_GROUP Used with llGetParcelPrimCount to get the number of prims on the parcel owned by the group
461PARCEL_COUNT_OTHER Used with llGetParcelPrimCount to get the number of prims on the parcel owned by others
462PARCEL_COUNT_SELECTED Used with llGetParcelPrimCount to get the number of prims on the parcel currently selected or sat upon
463PARCEL_COUNT_TEMP Used with llGetParcelPrimCount to get the number of prims on the parcel that are temp on rez
464
465PARCEL_DETAILS_NAME Used with llGetParcelDetails to get the parcel name.
466PARCEL_DETAILS_DESC Used with llGetParcelDetails to get the parcel description.
467PARCEL_DETAILS_OWNER Used with llGetParcelDetails to get the parcel owner id.
468PARCEL_DETAILS_GROUP Used with llGetParcelDetails to get the parcel group id.
469PARCEL_DETAILS_AREA Used with llGetParcelDetails to get the parcel area in square meters.
470
471# string constants
472[word .1, .3, .5]
473NULL_KEY Indicates an empty key
474EOF Indicates the last line of a notecard was read
475
476# float constants
477[word .3, .1, .5]
478PI 3.1415926535897932384626433832795
479TWO_PI 6.283185307179586476925286766559
480PI_BY_TWO 1.5707963267948966192313216916398
481DEG_TO_RAD To convert from degrees to radians
482RAD_TO_DEG To convert from radians to degrees
483SQRT2 1.4142135623730950488016887242097
484
485# compound constants
486[word .4, .2, .4]
487ZERO_VECTOR <0.0, 0.0, 0.0>
488ZERO_ROTATION <0.0, 0.0, 0.0, 1.0>
489
490
491# flow control keywords
492[word 0, 0, .8]
493for for loop:for (initializer; test; iteration):{: statements:}
494do do loop:do:{: statements:} while (test);
495while while loop:while (test):{ statements:}
496if if statement:if (test):{ statements:}
497else else clause:if (test):{ statements:}:else:{ statements:}
498jump jump statement:jump label;:
499return Leave current function or event handler
500
501# flow control label
502[line 0, 0, .8]
503@ Label:Target for jump statement
504
505# Comment
506[one_sided_delimiter .8, .3, .15]
507// Comment:Non-functional commentary or disabled code
508
509# String literals
510[two_sided_delimiter 0, .2, 0]
511" String literal
512
513#functions are supplied by the program now.
diff --git a/linden/indra/newview/app_settings/role_actions.xml b/linden/indra/newview/app_settings/role_actions.xml
new file mode 100644
index 0000000..02e484e
--- /dev/null
+++ b/linden/indra/newview/app_settings/role_actions.xml
@@ -0,0 +1,314 @@
1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
2
3<role_actions>
4 <action_set
5 name="Membership"
6 description="These Abilities include powers to add and remove group Members, and allow new Members to join without an invitation."
7 >
8
9 <action
10 name="member invite"
11 description="Invite People to this Group"
12 longdescription="Invite People to this Group using the 'Invite New Person...' button in the Members &amp; Roles tab > Members sub-tab."
13 value="1"
14 />
15 <action
16 name="member eject"
17 description="Eject Members from this Group"
18 longdescription="Eject Members from this Group using the 'Eject From Group' button in the Members &amp; Roles tab > Members sub-tab. An Owner can eject anyone except another Owner. If you're not an Owner, a Member can be ejected from a group if, and only if, they're only in the Everyone Role, and NO other Roles. To remove Members from Roles, you need to have the 'Remove Members from Roles' Ability."
19 value="2"
20 />
21 <action
22 name="member options"
23 description="Toggle 'Open Enrollment' and change 'Signup Fee'"
24 longdescription="Toggle 'Open Enrollment' to let new Members join without an invitation, and change 'Signup Fee' in the Group Preferences section of the General tab."
25 value="3"
26 />
27 </action_set>
28
29 <action_set
30 name="Roles"
31 description="These Abilities include powers to add, remove, and change group Roles, add and remove Members in Roles, and assign Abilities to Roles."
32 >
33 <action
34 name="role create"
35 description="Create new Roles"
36 longdescription="Create new Roles in the Members &amp; Roles tab > Roles sub-tab."
37 value="4"
38 />
39 <action
40 name="role delete"
41 description="Delete Roles"
42 longdescription="Delete Roles in the Members &amp; Roles tab > Roles sub-tab."
43 value="5"
44 />
45 <action
46 name="role properties"
47 description="Change Role names, titles, and descriptions"
48 longdescription="Change Role names, titles, and descriptions at the bottom of the the Members &amp; Roles tab > Roles sub-tab after selecting a Role."
49 value="6"
50 />
51 <action name="role assign member limited" description="Assign Members to Assigner's Roles" longdescription="Assign Members to Roles in the Assigned Roles section of the Members &amp; Roles tab &gt; Members sub-tab. A member with this power can only add members to a role the assigner is already in." value="7"/>
52 <action name="role assign member" description="Assign Members to Any Role" longdescription="Assign Members to Any Role in the Assigned Roles section of the Members &amp; Roles tab &gt; Members sub-tab. *WARNING* Any Member in a Role with this Ability can assign themselves--and any other non-Owner Member--to Roles that have more powers than they currently have, potentially elevating themselves to near-Owner power. Be sure you know what you're doing before assigning this Ability." value="8"/>
53 <action
54 name="role remove member"
55 description="Remove Members from Roles"
56 longdescription="Remove Members from Roles in the Assigned Roles section of the Members &amp; Roles tab > Members sub-tab. Owners can't be removed."
57 value="9"
58 />
59 <action name="role change actions" description="Assign and Remove Abilities in Roles" longdescription="Assign and Remove Abilities in Roles in the Allowed Abilities section of the Members &amp; Roles tab &gt; Roles sub-tab. *WARNING* Any Member in a Role with this Ability can assign themselves--and any other non-Owner Member--all Abilities, potentially elevating themselves to near-Owner power. Be sure you know what you're doing before assigning this Ability." value="10"/>
60 </action_set>
61
62 <action_set
63 name="Group Identity"
64 description="These Abilities include powers to modify this group's identity, such as changing public visibility, charter, and insignia."
65 >
66 <action
67 name="group change identity"
68 description="Change Charter, Insignia, 'Publish on the Web', and which members are publicly visible in Group Information."
69 longdescription="Change Charter, Insignia, 'Publish on the Web', and which members are publicly visible in Group Information. This is done in the General tab."
70 value="11"
71 />
72 </action_set>
73
74 <action_set
75 name="Parcel Management"
76 description="These Abilities include powers to deed, modify, and sell land in this group's land holdings. To get to the About Land window, right-click the ground and select 'About Land...', or click the parcel info in the menu bar."
77 >
78
79 <action
80 name="land deed"
81 description="Deed land and buy land for group"
82 longdescription="Deed land and buy land for group. This is done in About Land > General tab."
83 value="12"
84 />
85 <action name="land release" description="Abandon land to Governor Linden" longdescription="Abandon land to Governor Linden. *WARNING* Any Member in a Role with this Ability can abandon group-owned land in About Land &gt; General tab, reverting it to Linden ownership without a sale! Be sure you know what you're doing before assigning this Ability." value="13"/>
86 <action name="land set sale info" description="Set land for sale info" longdescription="Set land for sale info. *WARNING* Any Member in a Role with this Ability can sell group-owned land in About Land &gt; General tab as they wish! Be sure you know what you're doing before assigning this Ability." value="14"/>
87 <action
88 name="land divide join"
89 description="Subdivide and join parcels"
90 longdescription="Subdivide and join parcels. This is done by right-clicking the ground, 'Edit Terrain', and dragging your mouse on the land to make a selection. To subdivide, select what you want to split and click 'Subdivide...'. To join, select two or more contiguous parcels and click 'Join...'. "
91 value="15"
92 />
93 </action_set>
94
95 <action_set
96 name="Parcel Identity"
97 description="These Abilities include powers to change the parcel name and publish settings, Find directory visibility, and landing point &amp; TP routing options."
98 >
99
100 <action
101 name="land find places"
102 description="Toggle 'Show in Find Places' and set category"
103 longdescription="Toggle 'Show in Find Places' and setting a parcel's category in About Land > Options tab."
104 value="17"
105 />
106 <action
107 name="land change identity"
108 description="Change parcel name, description, and 'Publish on the Web' settings"
109 longdescription="Change parcel name, description, and 'Publish on the Web' settings. This is done in About Land > Options tab."
110 value="18"
111 />
112 <action
113 name="land set landing point"
114 description="Set landing point and set teleport routing"
115 longdescription="On a group-owned parcel, Members in a Role with this Ability can set a landing point to specify where incoming teleports arrive, and also set teleport routing for further control. This is done in About Land > Options tab."
116 value="19"
117 />
118 </action_set>
119
120 <action_set
121 name="Parcel Settings"
122 description="These Abilities include powers which affect parcel options, such as 'Create Objects', 'Edit Terrain', and music &amp; media settings."
123 >
124
125 <action
126 name="land change media"
127 description="Change music &amp; media settings"
128 longdescription="Change streaming music and movie settings in About Land > Media tab."
129 value="20"
130 />
131 <action name="land edit" description="Toggle 'Edit Terrain'" longdescription="Toggle 'Edit Terrain'. *WARNING* About Land &gt; Options tab &gt; Edit Terrain allows anyone to terraform your land's shape, and place and move Linden plants. Be sure you know what you're doing before assigning this Ability. Editing terrain is toggled in About Land &gt; Options tab." value="21"/>
132 <action
133 name="land options"
134 description="Toggle various About Land > Options settings"
135 longdescription="Toggle 'Safe (no damage)', 'Fly', and allow other Residents to: 'Create Objects', 'Edit Terrain', 'Create Landmarks', and 'Run Scripts' on group-owned land in About Land > Options tab."
136 value="22"
137 />
138 </action_set>
139
140 <action_set
141 name="Parcel Powers"
142 description="These Abilities include powers which allow Members to bypass restrictions on group-owned parcels."
143 >
144
145 <action
146 name="land allow edit land"
147 description="Always allow 'Edit Terrain'"
148 longdescription="Members in a Role with this Ability can edit terrain on a group-owned parcel, even if it's turned off in About Land > Options tab."
149 value="23"
150 />
151 <action
152 name="land allow fly"
153 description="Always allow 'Fly'"
154 longdescription="Members in a Role with this Ability can fly on a group-owned parcel, even if it's turned off in About Land > Options tab."
155 value="24"
156 />
157 <action
158 name="land allow create"
159 description="Always allow 'Create Objects'"
160 longdescription="Members in a Role with this Ability can create objects on a group-owned parcel, even if it's turned off in About Land > Options tab."
161 value="25"
162 />
163 <action
164 name="land allow landmark"
165 description="Always allow 'Create Landmark'"
166 longdescription="Members in a Role with this Ability can landmark a group-owned parcel, even if it's turned off in About Land > Options tab."
167 value="26"
168 />
169 <action
170 name="land allow set home"
171 description="Allow 'Set Home to Here' on group land"
172 longdescription="Members in a Role with this Ability can use World menu > Set Home to Here on a group parcel (either land set or deeded to this group)."
173 value="28"
174 />
175 </action_set>
176
177 <action_set
178 name="Parcel Access"
179 description="These Abilities include powers to allow or restrict access to group-owned parcels, including freezing and ejecting Residents."
180 >
181
182 <action
183 name="land manage allowed"
184 description="Manage parcel Access lists"
185 longdescription="Manage parcel Access lists in About Land > Access tab."
186 value="29"
187 />
188 <action
189 name="land manage banned"
190 description="Manage parcel Ban lists"
191 longdescription="Manage parcel Ban lists in About Land > Ban tab."
192 value="30"
193 />
194 <action
195 name="land manage passes"
196 description="Change parcel 'Sell passes...' settings"
197 longdescription="Change parcel 'Sell passes...' settings in About Land > Access tab."
198 value="31"
199 />
200 <action
201 name="land admin"
202 description="Eject and freeze Residents on parcels"
203 longdescription="Members in a Role with this Ability can handle an unwelcome Resident on a group-owned parcel by right-clicking them, More >, and selecting 'Eject...' or 'Freeze...'."
204 value="32"
205 />
206 </action_set>
207
208 <action_set
209 name="Parcel Content"
210 description="These Abilities include powers to allow members to return objects and place and move Linden plants. This is useful for Members to clean up litter and do landscaping, but it should also be used with care, because there's no undo for returning objects."
211 >
212
213 <action
214 name="land return group owned"
215 description="Return objects owned by group"
216 longdescription="Return objects on group-owned parcels that are owned by the group in About Land > Objects tab."
217 value="48"
218 />
219 <action
220 name="land return group set"
221 description="Return objects set to group"
222 longdescription="Return objects on group-owned parcels that are set to the group in About Land > Objects tab."
223 value="33"
224 />
225 <action
226 name="land return non group"
227 description="Return non-group objects"
228 longdescription="Return objects on group-owned parcels that are non-group in About Land > Objects tab."
229 value="34"
230 />
231 <action
232 name="land gardening"
233 description="Landscaping using Linden plants"
234 longdescription="Landscaping ability to place and move Linden trees, plants, and grasses. These items can be found in your inventory's Library > Objects folder or they can be created via the Build button."
235 value="35"
236 />
237 </action_set>
238
239 <action_set
240 name="Object Management"
241 description="These Abilities include powers to deed, modify, and sell group-owned objects. These changes are done in the Edit Tools > General Tab. Right-click an object and Edit to see its settings. "
242 >
243
244 <action
245 name="object deed"
246 description="Deed objects to group"
247 longdescription="Deed objects to group in the Edit Tools > General Tab."
248 value="36"
249 />
250 <action
251 name="object manipulate"
252 description="Manipulate (move, copy, modify) group-owned objects"
253 longdescription="Manipulate (move, copy, modify) group-owned objects in the Edit Tools > General Tab."
254 value="38"
255 />
256 <action
257 name="object set sale"
258 description="Set group-owned objects for sale"
259 longdescription="Set group-owned objects for sale in the Edit Tools > General tab."
260 value="39"
261 />
262 </action_set>
263
264 <action_set
265 name="Accounting"
266 description="These Abilities include powers which require Members to pay group liabilities and receive group dividends, and restrict access to group account history."
267 >
268
269 <action
270 name="accounting accountable"
271 description="Pay group liabilities and receive group dividends"
272 longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. "
273 value="40"
274 />
275 </action_set>
276
277 <action_set
278 name="Notices"
279 description="These Abilities include powers to allow Members to send, receive, and view group Notices."
280 >
281
282 <action
283 name="notices send"
284 description="Send Notices"
285 longdescription="Members in a Role with this Ability can send Notices in Group Information > Notices tab."
286 value="42"
287 />
288 <action
289 name="notices receive"
290 description="Receive Notices and view past Notices"
291 longdescription="Members in a Role with this Ability can receive Notices and view past Notices in Group Information > Notices tab."
292 value="43"
293 />
294 </action_set>
295
296 <action_set
297 name="Proposals"
298 description="These Abilities include powers to allow Members to set up Proposals, vote on Proposals, and view voting history."
299 >
300
301 <action
302 name="proposal start"
303 description="Create Proposals"
304 longdescription="Members in a Role with this Ability can create proposals to be voted on in Group Information > Proposals tab."
305 value="44"
306 />
307 <action
308 name="proposal vote"
309 description="Vote on Proposals"
310 longdescription="Members in a Role with this Ability can vote on proposals in Group Information > Proposals tab."
311 value="45"
312 />
313 </action_set>
314</role_actions>
diff --git a/linden/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl b/linden/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl
new file mode 100644
index 0000000..5731add
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl
@@ -0,0 +1,7 @@
1void default_lighting();
2
3void main()
4{
5 default_lighting();
6}
7
diff --git a/linden/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/linden/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
new file mode 100644
index 0000000..1fcc001
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
@@ -0,0 +1,19 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color);
2
3attribute vec4 weight; //1
4
5uniform vec4 matrixPalette[45];
6
7mat4 getSkinnedTransform()
8{
9 mat4 ret;
10 int i = int(floor(weight.x));
11 float x = fract(weight.x);
12
13 ret[0] = mix(matrixPalette[i+0], matrixPalette[i+1], x);
14 ret[1] = mix(matrixPalette[i+15],matrixPalette[i+16], x);
15 ret[2] = mix(matrixPalette[i+30],matrixPalette[i+31], x);
16 ret[3] = vec4(0,0,0,1);
17
18 return ret;
19}
diff --git a/linden/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl b/linden/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
new file mode 100644
index 0000000..50f9b01
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
@@ -0,0 +1,35 @@
1void default_scatter(vec3 viewVec, vec3 lightDir);
2vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
3mat4 getSkinnedTransform();
4vec2 getScatterCoord(vec3 viewVec, vec3 lightDir);
5
6attribute vec4 materialColor;
7
8void main()
9{
10 gl_TexCoord[0] = gl_MultiTexCoord0;
11
12 vec4 pos;
13 vec3 norm;
14
15 mat4 trans = getSkinnedTransform();
16 pos.x = dot(trans[0], gl_Vertex);
17 pos.y = dot(trans[1], gl_Vertex);
18 pos.z = dot(trans[2], gl_Vertex);
19 pos.w = 1.0;
20
21 norm.x = dot(trans[0].xyz, gl_Normal);
22 norm.y = dot(trans[1].xyz, gl_Normal);
23 norm.z = dot(trans[2].xyz, gl_Normal);
24 norm = normalize(norm);
25
26 gl_Position = gl_ProjectionMatrix * pos;
27
28 //gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
29
30 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
31
32 vec4 color = calcLighting(pos.xyz, norm, materialColor, gl_Color);
33 gl_FrontColor = color;
34
35}
diff --git a/linden/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl b/linden/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl
new file mode 100644
index 0000000..5731add
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl
@@ -0,0 +1,7 @@
1void default_lighting();
2
3void main()
4{
5 default_lighting();
6}
7
diff --git a/linden/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl b/linden/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
new file mode 100644
index 0000000..d436b4e
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
@@ -0,0 +1,20 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec3 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5
6void main()
7{
8 //transform vertex
9 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
10 gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
11
12 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
13 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
14
15 vec4 color = calcLighting(pos, norm, materialColor, gl_Color.rgb);
16 default_scatter(pos, gl_LightSource[0].position.xyz);
17
18 gl_FrontColor = color;
19}
20
diff --git a/linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl b/linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
new file mode 100644
index 0000000..b311afb
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
@@ -0,0 +1,6 @@
1uniform sampler2D diffuseMap;
2
3void main()
4{
5 gl_FragColor = vec4(gl_Color.rgb, texture2D(diffuseMap, gl_TexCoord[0].xy).a);
6}
diff --git a/linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl b/linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
new file mode 100644
index 0000000..b6dcbe1
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
@@ -0,0 +1,17 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color);
2mat4 getSkinnedTransform();
3
4void main()
5{
6 vec4 pos;
7
8 mat4 trans = getSkinnedTransform();
9 pos.x = dot(trans[0], gl_Vertex);
10 pos.y = dot(trans[1], gl_Vertex);
11 pos.z = dot(trans[2], gl_Vertex);
12 pos.w = 1.0;
13
14 gl_FrontColor = gl_Color;
15 gl_TexCoord[0] = gl_MultiTexCoord0;
16 gl_Position = gl_ProjectionMatrix * pos;
17} \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/groundF.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/groundF.glsl
new file mode 100644
index 0000000..ef81b07
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/groundF.glsl
@@ -0,0 +1,5 @@
1
2void main()
3{
4 gl_FragColor = gl_Color;
5}
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/groundV.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/groundV.glsl
new file mode 100644
index 0000000..e227c58
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/groundV.glsl
@@ -0,0 +1,6 @@
1
2void main()
3{
4 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
5 gl_FrontColor = gl_Fog.color;
6}
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/scatterF.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/scatterF.glsl
new file mode 100644
index 0000000..3aa44de
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/scatterF.glsl
@@ -0,0 +1,17 @@
1uniform sampler2D scatterMap;
2
3//for per-pixel scatter
4vec4 getScatter(vec3 viewVec, vec3 lightDir)
5{
6 return gl_TexCoord[5];
7}
8
9void applyScatter(inout vec3 color)
10{
11 color = gl_TexCoord[5].a*color + (1.0-gl_TexCoord[5].a) * gl_TexCoord[5].rgb;
12}
13
14void applyScatter(inout vec3 color, vec4 haze)
15{
16 color.rgb = haze.rgb + haze.a * color.rgb;
17}
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/scatterV.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/scatterV.glsl
new file mode 100644
index 0000000..19dc2b8
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/scatterV.glsl
@@ -0,0 +1,15 @@
1
2
3vec2 getScatterCoord(vec3 viewVec, vec3 lightDir)
4{
5 vec2 scatterCoord = vec2(0,0);
6 return scatterCoord;
7}
8
9void default_scatter(vec3 viewVec, vec3 lightDir)
10{
11 float f = gl_Fog.density * (gl_ModelViewProjectionMatrix * gl_Vertex).z;
12 f = clamp(exp2(-f),0.0,1.0);
13 gl_TexCoord[5].a = f;
14 gl_TexCoord[5].rgb = gl_Fog.color.rgb;
15}
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
new file mode 100644
index 0000000..fde3701
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
@@ -0,0 +1,19 @@
1void terrain_lighting(inout vec3 color);
2
3uniform sampler2D detail0; //0
4uniform sampler2D detail1; //2
5uniform sampler2D alphaRamp; //1
6
7
8void main()
9{
10 float a = texture2D(alphaRamp, gl_TexCoord[1].xy).a;
11 vec3 color = mix(texture2D(detail1, gl_TexCoord[2].xy).rgb,
12 texture2D(detail0, gl_TexCoord[0].xy).rgb,
13 a);
14
15 terrain_lighting(color);
16
17 gl_FragColor.rgb = color;
18 gl_FragColor.a = texture2D(alphaRamp, gl_TexCoord[3].xy).a;
19}
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
new file mode 100644
index 0000000..3153a80
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
@@ -0,0 +1,37 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5
6vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
7{
8 vec4 tcoord;
9
10 tcoord.x = dot(vpos, tp0);
11 tcoord.y = dot(vpos, tp1);
12 tcoord.z = tc.z;
13 tcoord.w = tc.w;
14
15 tcoord = mat * tcoord;
16
17 return tcoord;
18}
19
20void main()
21{
22 //transform vertex
23 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
24
25 vec4 pos = gl_ModelViewMatrix * gl_Vertex;
26 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
27
28 vec4 color = calcLighting(pos.xyz, norm, materialColor, gl_Color);
29
30 gl_FrontColor = color;
31
32 gl_TexCoord[0] = texgen_object(gl_Vertex,gl_MultiTexCoord0,gl_TextureMatrix[0],gl_ObjectPlaneS[0],gl_ObjectPlaneT[0]);
33 gl_TexCoord[1] = gl_TextureMatrix[1]*gl_MultiTexCoord1;
34 gl_TexCoord[2] = texgen_object(gl_Vertex,gl_MultiTexCoord2,gl_TextureMatrix[2],gl_ObjectPlaneS[2],gl_ObjectPlaneT[2]);
35 gl_TexCoord[3] = gl_TextureMatrix[3]*gl_MultiTexCoord3;
36 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
37}
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
new file mode 100644
index 0000000..f8b8031
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
@@ -0,0 +1,22 @@
1void water_lighting(inout vec3 diff);
2
3uniform samplerCube environmentMap;
4uniform sampler2D diffuseMap;
5uniform sampler2D bumpMap;
6
7varying vec4 specular;
8
9void main()
10{
11 vec4 depth = texture2D(diffuseMap, gl_TexCoord[0].xy);
12 vec4 diff = texture2D(bumpMap, gl_TexCoord[1].xy);
13 vec3 ref = textureCube(environmentMap, gl_TexCoord[2].xyz).rgb;
14
15 diff.rgb *= depth.rgb;
16
17 vec3 col = mix(diff.rgb, ref, specular.a)+specular.rgb*diff.rgb;
18
19 water_lighting(col.rgb);
20 gl_FragColor.rgb = col.rgb;
21 gl_FragColor.a = (gl_Color.a+depth.a)*0.5;
22}
diff --git a/linden/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/linden/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
new file mode 100644
index 0000000..873a6fc
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
@@ -0,0 +1,41 @@
1void default_scatter(vec3 viewVec, vec3 lightDir);
2vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec3 baseCol);
3vec2 getScatterCoord(vec3 viewVec, vec3 lightDir);
4
5varying vec4 specular;
6
7vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
8{
9 vec4 tcoord;
10
11 tcoord.x = dot(vpos, tp0);
12 tcoord.y = dot(vpos, tp1);
13 tcoord.z = tc.z;
14 tcoord.w = tc.w;
15
16 tcoord = mat * tcoord;
17
18 return tcoord;
19}
20
21void main()
22{
23 //transform vertex
24 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
25 gl_TexCoord[0] = gl_MultiTexCoord0;
26 gl_TexCoord[1] = texgen_object(gl_Vertex, gl_MultiTexCoord1, gl_TextureMatrix[1], gl_ObjectPlaneS[1],gl_ObjectPlaneT[1]);
27
28 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
29 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
30 vec4 spec = gl_Color;
31 gl_FrontColor.rgb = calcLightingSpecular(pos, norm, gl_Color, spec, vec3(0.0, 0.0, 0.0)).rgb;
32 gl_FrontColor.a = gl_Color.a;
33 specular = spec;
34 specular.a = gl_Color.a*0.5;
35 vec3 ref = reflect(pos,norm);
36
37 gl_TexCoord[2] = gl_TextureMatrix[2]*vec4(ref,1);
38
39 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
40}
41
diff --git a/linden/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl b/linden/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
new file mode 100644
index 0000000..1e342fb
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
@@ -0,0 +1,6 @@
1uniform sampler2D diffuseMap;
2
3void main()
4{
5 gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
6}
diff --git a/linden/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl b/linden/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
new file mode 100644
index 0000000..bb6707b
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
@@ -0,0 +1,20 @@
1attribute vec4 materialColor;
2
3void main()
4{
5 //transform vertex
6 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
7 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
8 pos = normalize(pos);
9 float d = dot(pos, normalize(gl_NormalMatrix * gl_Normal));
10 d *= d;
11 d = 1.0 - d;
12 d *= d;
13
14 d = min(d, materialColor.a*2.0);
15
16 gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
17 gl_FrontColor.rgb = materialColor.rgb;
18 gl_FrontColor.a = max(d, materialColor.a);
19}
20
diff --git a/linden/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/linden/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
new file mode 100644
index 0000000..b2a6d67
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
@@ -0,0 +1,31 @@
1void applyScatter(inout vec3 color);
2
3uniform sampler2D diffuseMap;
4
5void default_lighting()
6{
7 vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
8 applyScatter(color.rgb);
9 gl_FragColor = color;
10}
11
12void alpha_lighting()
13{
14 default_lighting();
15}
16
17void water_lighting(inout vec3 diff)
18{
19 applyScatter(diff);
20}
21
22void terrain_lighting(inout vec3 color)
23{
24 color.rgb *= gl_Color.rgb;
25 applyScatter(color);
26}
27
28vec4 getLightColor()
29{
30 return gl_Color;
31} \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/linden/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
new file mode 100644
index 0000000..e381631
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
@@ -0,0 +1,99 @@
1
2float calcDirectionalLight(vec3 n, vec3 l)
3{
4 float a = max(dot(n,l),0.0);
5 return a;
6}
7
8float calcPointLight(vec3 v, vec3 n, vec3 l, float r, float pw)
9{
10 //get light vector
11 vec3 lv = l-v;
12
13 //get distance
14 float d = length(lv);
15
16 //normalize light vector
17 lv *= 1.0/d;
18
19 //distance attenuation
20 float da = max((r-d)/r, 0.0);
21
22 //da = pow(da, pw);
23
24 //angular attenuation
25 da *= calcDirectionalLight(n, lv);
26
27 return da;
28}
29
30float calcDirectionalSpecular(vec3 view, vec3 n, vec3 l)
31{
32 float a = max(dot(n,l),0.0);
33 return a;
34}
35
36float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da)
37{
38
39 specular.rgb += calcDirectionalSpecular(view,n,l)*lightCol*da;
40 return calcDirectionalLight(n,l);
41}
42
43vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol)
44{
45 //get light vector
46 vec3 lv = l-v;
47
48 //get distance
49 float d = length(lv);
50
51 //normalize light vector
52 lv *= 1.0/d;
53
54 //distance attenuation
55 float da = clamp((r-d)/r, 0.0, 1.0);
56
57 //da = pow(da, pw);
58
59 //angular attenuation
60 da *= calcDirectionalLightSpecular(specular, view, n, lv, lightCol, da);
61
62 return da*lightCol;
63}
64
65vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
66{
67 vec4 col;
68 col.a = color.a;
69
70 col.rgb = gl_LightModel.ambient.rgb + baseLight.rgb;
71
72 col.rgb += gl_LightSource[0].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[0].position.xyz);
73 col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
74
75 col.rgb = min(col.rgb*color.rgb, 1.0);
76
77 return col;
78}
79
80vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec3 baseLight)
81{
82 return calcLighting(pos, norm, color, vec4(baseLight, 1.0));
83}
84
85vec4 calcLighting(vec3 pos, vec3 norm, vec4 color)
86{
87 return calcLighting(pos, norm, color, vec3(0.0,0.0,0.0));
88}
89
90vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
91{
92 specularColor.rgb = vec3(0.0, 0.0, 0.0);
93 return calcLighting(pos, norm, color, baseCol);
94}
95
96vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec3 baseCol)
97{
98 return calcLightingSpecular(pos, norm, color, specularColor, vec4(baseCol, 1.0));
99}
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/alphaF.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/alphaF.glsl
new file mode 100644
index 0000000..0d98f36
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/objects/alphaF.glsl
@@ -0,0 +1,6 @@
1void alpha_lighting();
2
3void main()
4{
5 alpha_lighting();
6}
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/alphaV.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/alphaV.glsl
new file mode 100644
index 0000000..91821f7
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/objects/alphaV.glsl
@@ -0,0 +1,21 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5
6void main()
7{
8 //transform vertex
9 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
10 gl_TexCoord[0] = gl_MultiTexCoord0;
11
12 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
13 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
14
15 default_scatter(pos, gl_LightSource[0].position.xyz);
16
17 vec4 color = calcLighting(pos, norm, materialColor, gl_Color);
18 color.a = materialColor.a;
19
20 gl_FrontColor = color;
21}
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyF.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyF.glsl
new file mode 100644
index 0000000..8509c62
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyF.glsl
@@ -0,0 +1,18 @@
1vec4 getLightColor();
2void applyScatter(inout vec3 col);
3
4uniform samplerCube environmentMap;
5uniform sampler2D diffuseMap;
6
7void main()
8{
9 vec4 diff = texture2D(diffuseMap, gl_TexCoord[0].xy);
10 vec3 ref = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
11 vec4 specular = gl_TexCoord[2];
12 vec3 col = mix(getLightColor().rgb * diff.rgb, ref, specular.a)+specular.rgb*diff.rgb;
13
14 applyScatter(col);
15
16 gl_FragColor.rgb = col;
17 gl_FragColor.a = diff.a*gl_Color.a;
18}
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyV.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyV.glsl
new file mode 100644
index 0000000..9a189a2
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/objects/bumpshinyV.glsl
@@ -0,0 +1,25 @@
1vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5attribute vec4 specularColor;
6
7void main()
8{
9 //transform vertex
10 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
11 gl_TexCoord[0] = gl_MultiTexCoord0;
12
13 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
14 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
15
16 vec4 spec = specularColor;
17 gl_FrontColor.rgb = calcLightingSpecular(pos, norm, materialColor, spec, gl_Color).rgb;
18 gl_FrontColor.a = materialColor.a;
19 gl_TexCoord[2] = spec;
20 vec3 ref = reflect(pos,norm);
21 gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
22
23 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
24}
25
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl
new file mode 100644
index 0000000..ce5ab12
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl
@@ -0,0 +1,6 @@
1void default_lighting();
2
3void main()
4{
5 default_lighting();
6}
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
new file mode 100644
index 0000000..2aa3521
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
@@ -0,0 +1,21 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5
6void main()
7{
8 //transform vertex
9 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
10 gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
11
12 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
13 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
14
15 default_scatter(pos, gl_LightSource[0].position.xyz);
16
17 vec4 color = calcLighting(pos, norm, materialColor, gl_Color);
18 gl_FrontColor = color;
19
20 gl_FogFragCoord = pos.z;
21}
diff --git a/linden/indra/newview/app_settings/shaders/class2/avatar/avatarV.glsl b/linden/indra/newview/app_settings/shaders/class2/avatar/avatarV.glsl
new file mode 100644
index 0000000..b040143
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/avatar/avatarV.glsl
@@ -0,0 +1,48 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec3 baseCol);
2mat4 getSkinnedTransform();
3void default_scatter(vec3 viewVec, vec3 lightDir);
4
5attribute vec4 materialColor;
6attribute vec4 binormal;
7
8void main()
9{
10 gl_TexCoord[0] = gl_MultiTexCoord0;
11
12 vec4 pos;
13 mat4 trans = getSkinnedTransform();
14 pos.x = dot(trans[0], gl_Vertex);
15 pos.y = dot(trans[1], gl_Vertex);
16 pos.z = dot(trans[2], gl_Vertex);
17 pos.w = 1.0;
18
19 vec3 norm;
20 norm.x = dot(trans[0].xyz, gl_Normal);
21 norm.y = dot(trans[1].xyz, gl_Normal);
22 norm.z = dot(trans[2].xyz, gl_Normal);
23 norm = normalize(norm);
24
25 vec3 binorm;
26 binorm.x = dot(trans[0].xyz, binormal.xyz);
27 binorm.y = dot(trans[1].xyz, binormal.xyz);
28 binorm.z = dot(trans[2].xyz, binormal.xyz);
29
30 float spec = 1.0-max(dot(reflect(normalize(pos.xyz), norm),gl_LightSource[0].position.xyz), 0.0);
31 spec *= spec;
32 spec = 1.0-spec;
33
34 vec4 color = calcLighting(pos.xyz, norm, materialColor, gl_Color.rgb);
35 gl_FrontColor = color;
36
37 gl_Position = gl_ProjectionMatrix * pos;
38
39 vec3 N = norm;
40 vec3 B = normalize(binorm);
41 vec3 T = cross(N,B);
42
43 //gl_TexCoord[1].xy = gl_MultiTexCoord0.xy + 1.0/512.0 * vec2(dot(T,gl_LightSource[0].position.xyz),
44 // dot(B,gl_LightSource[0].position.xyz));
45
46
47 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
48} \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/linden/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
new file mode 100644
index 0000000..7957edd
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
@@ -0,0 +1,23 @@
1vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec3 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5attribute vec4 specularColor;
6
7void main()
8{
9 //transform vertex
10 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
11 gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
12
13 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
14 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
15
16 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
17 vec4 specular = specularColor;
18 vec4 color = calcLightingSpecular(pos, norm, materialColor, specular, gl_Color.rgb);
19
20 gl_FrontColor = color;
21 gl_FogFragCoord = pos.z;
22}
23
diff --git a/linden/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/linden/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
new file mode 100644
index 0000000..e0e79e9
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
@@ -0,0 +1,136 @@
1void applyScatter(inout vec3 color);
2
3uniform sampler2D diffuseMap;
4uniform sampler2D bumpMap;
5uniform samplerCube environmentMap; //: TEXUNIT4, // Environment map texture
6uniform sampler2D screenTex; // : TEXUNIT5
7
8uniform vec3 lightDir;
9uniform vec3 specular;
10uniform float lightExp;
11uniform vec2 fbScale;
12uniform float refScale;
13
14float msin(float x) {
15 float k = sin(x)+1.0;
16 k *= 0.5;
17 k *= k;
18 return 2.0 * k;
19}
20
21float mcos(float x) {
22 float k = cos(x)+1.0;
23 k *= 0.5;
24 k *= k;
25 return 2.0 * k;
26}
27
28float waveS(vec2 v, float t, float a, float f, vec2 d, float s, sampler1D sinMap)
29{
30 return texture1D(sinMap, (dot(d, v)*f + t*s)*f).r*a;
31}
32
33float waveC(vec2 v, float t, float a, float f, vec2 d, float s, sampler1D sinMap)
34{
35 return texture1D(sinMap, (dot(d, v)*f + t*s)*f).g*a*2.0-1.0;
36}
37
38float magnitude(vec3 vec) {
39 return sqrt(dot(vec,vec));
40}
41
42vec3 mreflect(vec3 i, vec3 n) {
43 return i + n * 2.0 * abs(dot(n,i))+vec3(0.0,0.0,0.5);
44}
45
46void main()
47{
48 vec2 texCoord = gl_TexCoord[0].xy; // Texture coordinates
49 vec2 littleWave1 = gl_TexCoord[0].zw;
50 vec2 littleWave2 = gl_TexCoord[1].xy;
51 vec2 bigWave = gl_TexCoord[1].zw;
52 vec3 viewVec = gl_TexCoord[2].xyz;
53 vec4 refCoord = gl_TexCoord[3];
54 vec4 col = gl_Color;
55 vec4 color;
56
57 //get color from alpha map (alpha denotes water depth), rgb denotes water color
58 vec4 wcol = texture2D(diffuseMap, texCoord.xy);
59
60 //store texture alpha
61 float da = wcol.a;
62
63 //modulate by incoming water color
64 //wcol.a *= refCoord.w;
65
66 //scale wcol.a (water depth) for steep transition
67 wcol.a *= wcol.a;
68
69 //normalize view vector
70 viewVec = normalize(viewVec);
71
72 //get bigwave normal
73 vec3 wavef = texture2D(bumpMap, bigWave).xyz*2.0;
74
75 vec3 view = vec3(viewVec.x, viewVec.y, viewVec.z);
76
77 float dx = 1.0-(dot(wavef*2.0-vec3(1.0), view))*da;
78 dx *= 0.274;
79
80 //get detail normals
81 vec3 dcol = texture2D(bumpMap, littleWave1+dx*view.xy).rgb*0.75;
82 dcol += texture2D(bumpMap, littleWave2+view.xy*dx*0.1).rgb*1.25;
83
84 //interpolate between big waves and little waves (big waves in deep water)
85 wavef = wavef*wcol.a + dcol*(1.0-wcol.a);
86
87 //crunch normal to range [-1,1]
88 wavef -= vec3(1,1,1);
89
90 //get base fresnel component
91 float df = dot(viewVec,wavef);
92 //reposition fresnel to latter half of [0,1]
93 df = 1.0-clamp(df,0.0,1.0);
94
95 //set output alpha based on fresnel
96 color.a = clamp((df+da)*0.5,0.0,1.0);
97
98 //calculate reflection vector
99 vec3 ref = reflect(viewVec.xyz, wavef);
100
101 //get specular component
102 float spec = clamp(dot(lightDir, normalize(ref)),0.0,1.0);
103
104 //fudge reflection to be more noisy at good angles
105 ref.z = ref.z*ref.z+df*df*0.5;
106
107 //get diffuse component
108 float diff = clamp((abs(dot(ref, wavef))),0.0,1.0)*0.9;
109
110 //fudge diffuse for extra contrast and ambience
111 diff *= diff;
112 diff += 0.4;
113
114 //set diffuse color contribution
115 color.rgb = textureCube(environmentMap, ref).rgb*diff;
116
117 //harden specular
118 spec = pow(spec, lightExp);
119
120 //add specular color contribution
121 color.rgb += spec * specular;
122
123 //figure out distortion vector (ripply)
124 vec2 distort = clamp(((refCoord.xy/refCoord.z) * 0.5 + 0.5 + wavef.xy*refScale),0.0,0.99);
125
126 //read from framebuffer (offset)
127 vec4 fb = texture2D(screenTex, distort*fbScale);
128
129 //tint by framebuffer
130 color.rgb = color.a*color.rgb + (1.0-color.a)*fb.rgb;
131
132 //apply fog
133 applyScatter(color.rgb);
134
135 gl_FragColor = color;
136}
diff --git a/linden/indra/newview/app_settings/shaders/class2/environment/waterV.glsl b/linden/indra/newview/app_settings/shaders/class2/environment/waterV.glsl
new file mode 100644
index 0000000..5f06aeb
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/environment/waterV.glsl
@@ -0,0 +1,53 @@
1void default_scatter(vec3 viewVec, vec3 lightDir);
2
3uniform vec2 d1;
4uniform vec2 d2;
5uniform float time;
6uniform vec3 eyeVec;
7
8float wave(vec2 v, float t, float f, vec2 d, float s)
9{
10 return (dot(d, v)*f + t*s)*f;
11}
12
13void main()
14{
15 //transform vertex
16 vec4 position = gl_Vertex;
17 mat4 modelViewProj = gl_ModelViewProjectionMatrix;
18 vec4 oPosition = modelViewProj * position;
19 vec3 oRefCoord = oPosition.xyz + vec3(0, 0, 0.2);
20
21 //get view vector
22 vec4 oEyeVec;
23 oEyeVec.xyz = position.xyz-eyeVec;
24
25 //get wave position parameter (create sweeping horizontal waves)
26 vec3 v = position.xyz;
27 v.x += (cos(v.x*0.08+time*0.01)+sin(v.y*0.02))*6.0;
28
29 //get two normal map (detail map) texture coordinates
30 vec2 oTexCoord = gl_MultiTexCoord0.xy;
31 vec2 littleWave1 = (v.xy)*vec2(0.7, 1.5)+d2*time*0.065;
32 vec2 littleWave2 = (v.xy)*vec2(0.07, 0.15)-d1*time*0.087;
33
34 //pass wave parameters to pixel shader
35 float t = time * 0.075;
36 vec2 bigWave = (v.xy)*vec2(0.04,0.04)+d1*t;
37
38 //pass color and fog color to pixel shader
39 vec4 col = gl_Color;
40 col.a = clamp(abs(dot(normalize(oEyeVec.xyz), vec3(0,0,1))),0.0,1.0);
41 col.a = 1.0-col.a;
42 col.a += 0.75;
43 default_scatter((gl_ModelViewMatrix * gl_Vertex).xyz, gl_LightSource[0].position.xyz);
44
45 gl_Position = oPosition;
46 gl_TexCoord[0].xy = oTexCoord;
47 gl_TexCoord[0].zw = littleWave1;
48 gl_TexCoord[1].xy = littleWave2;
49 gl_TexCoord[1].zw = bigWave;
50 gl_TexCoord[2] = oEyeVec;
51 gl_TexCoord[3].xyz = oRefCoord;
52 gl_FrontColor = col;
53}
diff --git a/linden/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/linden/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
new file mode 100644
index 0000000..0ef1129
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
@@ -0,0 +1,36 @@
1void applyScatter(inout vec3 color);
2
3uniform sampler2D diffuseMap;
4
5void default_lighting()
6{
7 vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
8 applyScatter(color.rgb);
9 gl_FragColor = color;
10}
11
12void alpha_lighting()
13{
14 vec4 diff = texture2D(diffuseMap, gl_TexCoord[0].xy);
15 vec3 color = gl_Color.rgb * diff.rgb;
16 applyScatter(color);
17 gl_FragColor.rgb = color;
18 gl_FragColor.a = diff.a * gl_Color.a;
19}
20
21void water_lighting(inout vec3 diff)
22{
23 diff = (diff*0.9 + gl_Color.rgb*0.1);
24 applyScatter(diff);
25}
26
27void terrain_lighting(inout vec3 color)
28{
29 color.rgb *= gl_Color.rgb;
30 applyScatter(color);
31}
32
33vec4 getLightColor()
34{
35 return gl_Color;
36} \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl b/linden/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
new file mode 100644
index 0000000..b15960d
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
@@ -0,0 +1,126 @@
1// All lights, no specular highlights
2
3float calcDirectionalLight(vec3 n, vec3 l)
4{
5 float a = max(dot(n,l),0.0);
6 return a;
7}
8
9float calcPointLight(vec3 v, vec3 n, vec4 lp, float la)
10{
11 //get light vector
12 vec3 lv = lp.xyz-v;
13
14 //get distance
15 float d = length(lv);
16
17 //normalize light vector
18 lv *= 1.0/d;
19
20 //distance attenuation
21 float da = clamp(1.0/(la * d), 0.0, 1.0);
22
23 //angular attenuation
24 da *= calcDirectionalLight(n, lv);
25
26 return da;
27}
28
29float calcDirectionalSpecular(vec3 view, vec3 n, vec3 l)
30{
31 return pow(max(dot(reflect(view, n),l), 0.0),8.0);
32}
33
34float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da)
35{
36
37 specular.rgb += calcDirectionalSpecular(view,n,l)*lightCol*da;
38 return calcDirectionalLight(n,l);
39}
40
41vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol)
42{
43 //get light vector
44 vec3 lv = l-v;
45
46 //get distance
47 float d = length(lv);
48
49 //normalize light vector
50 lv *= 1.0/d;
51
52 //distance attenuation
53 float da = clamp(1.0/(r * d), 0.0, 1.0);
54
55 //angular attenuation
56
57 da *= calcDirectionalLightSpecular(specular, view, n, lv, lightCol, da);
58
59 return da*lightCol;
60}
61
62vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
63{
64 vec4 col;
65 col.a = color.a;
66
67 col.rgb = gl_LightModel.ambient.rgb + baseLight.rgb;
68
69 col.rgb += gl_LightSource[0].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[0].position.xyz);
70 col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
71 col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
72 col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation);
73 col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation);
74 col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation);
75 col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation);
76 col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation);
77
78 col.rgb = min(col.rgb*color.rgb, 1.0);
79
80 gl_FrontColor = vec4(col.rgb, col.a);
81 return col;
82}
83
84vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec3 baseLight)
85{
86 return calcLighting(pos, norm, color, vec4(baseLight, 1.0));
87}
88
89vec4 calcLighting(vec3 pos, vec3 norm, vec4 color)
90{
91 return calcLighting(pos, norm, color, vec3(0.0,0.0,0.0));
92}
93
94vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
95{
96 vec4 col;
97 col.a = color.a;
98
99 col.rgb = gl_LightModel.ambient.rgb;
100
101 vec3 view = normalize(pos);
102
103 vec4 specular = specularColor;
104 specularColor.rgb = vec3(0.0, 0.0, 0.0);
105
106 col.rgb += baseCol.a*gl_LightSource[0].diffuse.rgb*calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[0].position.xyz,gl_LightSource[0].diffuse.rgb*baseCol.a, 1.0);
107 col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[1].position.xyz,gl_LightSource[1].diffuse.rgb, 1.0);
108 col.rgb += calcPointLightSpecular(specularColor, view, pos, norm, gl_LightSource[2].position.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation,gl_LightSource[2].diffuse.rgb);
109 col.rgb += calcPointLightSpecular(specularColor, view, pos, norm, gl_LightSource[3].position.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation,gl_LightSource[3].diffuse.rgb);
110 col.rgb += calcPointLightSpecular(specularColor, view, pos, norm, gl_LightSource[4].position.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation,gl_LightSource[4].diffuse.rgb);
111 col.rgb += calcPointLightSpecular(specularColor, view, pos, norm, gl_LightSource[5].position.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation,gl_LightSource[5].diffuse.rgb);
112 //col.rgb += calcPointLightSpecular(specularColor, view, pos, norm, gl_LightSource[6].position.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation,gl_LightSource[6].diffuse.rgb);
113 //col.rgb += calcPointLightSpecular(specularColor, view, pos, norm, gl_LightSource[7].position.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation,gl_LightSource[7].diffuse.rgb);
114 col.rgb += baseCol.rgb;
115
116 col.rgb = min(col.rgb*color.rgb, 1.0);
117 specularColor.rgb = min(specularColor.rgb*specular.rgb, 1.0);
118
119 gl_FrontColor = vec4(col.rgb+specularColor.rgb,col.a);
120 return col;
121}
122
123vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec3 baseCol)
124{
125 return calcLightingSpecular(pos, norm, color, specularColor, vec4(baseCol, 1.0));
126}
diff --git a/linden/indra/newview/app_settings/shaders/class2/objects/alphaF.glsl b/linden/indra/newview/app_settings/shaders/class2/objects/alphaF.glsl
new file mode 100644
index 0000000..97feb55
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/objects/alphaF.glsl
@@ -0,0 +1,18 @@
1vec4 getLightColor();
2void applyScatter(inout vec3 col);
3
4uniform samplerCube environmentMap;
5uniform sampler2D diffuseMap;
6
7void main()
8{
9 vec4 diff = texture2D(diffuseMap, gl_TexCoord[0].xy);
10 vec3 ref = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
11 vec4 specular = gl_TexCoord[2];
12 vec3 col = mix(getLightColor().rgb * diff.rgb, ref, specular.a)+specular.rgb*diff.rgb;
13
14 applyScatter(col);
15
16 gl_FragColor.rgb = col.rgb;
17 gl_FragColor.a = diff.a*gl_Color.a;
18}
diff --git a/linden/indra/newview/app_settings/shaders/class2/objects/alphaV.glsl b/linden/indra/newview/app_settings/shaders/class2/objects/alphaV.glsl
new file mode 100644
index 0000000..baf5323
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/objects/alphaV.glsl
@@ -0,0 +1,24 @@
1vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5attribute vec4 specularColor;
6
7void main()
8{
9 //transform vertex
10 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
11 gl_TexCoord[0] = gl_MultiTexCoord0;
12
13 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
14 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
15 vec4 spec = specularColor;
16 gl_FrontColor.rgb = calcLightingSpecular(pos, norm, materialColor, spec, gl_Color).rgb;
17 gl_FrontColor.a = materialColor.a;
18 gl_TexCoord[2] = spec;
19 vec3 ref = reflect(pos,norm);
20 gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1);
21
22 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
23}
24
diff --git a/linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyF.glsl b/linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyF.glsl
new file mode 100644
index 0000000..7462bb1
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyF.glsl
@@ -0,0 +1,29 @@
1vec4 getLightColor();
2void applyScatter(inout vec3 col);
3
4uniform samplerCube environmentMap;
5uniform sampler2D diffuseMap;
6uniform sampler2D bumpMap;
7
8
9void main()
10{
11 vec4 diff = texture2D(diffuseMap, gl_TexCoord[0].xy);
12 vec3 ref = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;
13
14 vec4 specular = gl_TexCoord[3];
15
16 float b = texture2D(bumpMap, gl_TexCoord[0].xy).a;
17 b -= texture2D(bumpMap, gl_TexCoord[2].xy).a;
18
19 vec3 col = mix(getLightColor().rgb * diff.rgb, ref, specular.a)+specular.rgb*diff.rgb;
20 col += col * b;
21 float m = (col.r + col.g + col.b);
22 m *= 1.0/3.0;
23 col = mix(col, vec3(m), -specular.a*specular.a);
24
25 applyScatter(col);
26
27 gl_FragColor.rgb = col;
28 gl_FragColor.a = diff.a;
29}
diff --git a/linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyV.glsl b/linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyV.glsl
new file mode 100644
index 0000000..037b282
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class2/objects/bumpshinyV.glsl
@@ -0,0 +1,31 @@
1vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
2void default_scatter(vec3 viewVec, vec3 lightDir);
3
4attribute vec4 materialColor;
5attribute vec4 specularColor;
6attribute vec4 binormal;
7
8void main()
9{
10 //transform vertex
11 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
12 gl_TexCoord[0] = gl_MultiTexCoord0;
13
14 vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
15 vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
16 vec3 binorm = normalize(gl_NormalMatrix * binormal.xyz);
17 vec3 tangent = cross(binorm, norm);
18 binorm.xy = vec2(dot(tangent, gl_LightSource[0].position.xyz),
19 dot(binorm, gl_LightSource[0].position.xyz))*1.0/128.0;
20
21 vec4 spec = specularColor;
22 gl_FrontColor.rgb = calcLightingSpecular(pos, norm, materialColor, spec, gl_Color).rgb;
23 gl_TexCoord[3] = spec;
24 gl_FrontColor.a = materialColor.a;
25 vec3 ref = reflect(pos,norm);
26 gl_TexCoord[1].xyz = (gl_TextureMatrix[1]*vec4(ref,1.0)).xyz;
27 gl_TexCoord[2].xy = binorm.xy + gl_MultiTexCoord0.xy;
28
29 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
30}
31
diff --git a/linden/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl b/linden/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
new file mode 100644
index 0000000..2505afe
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
@@ -0,0 +1,128 @@
1vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec3 baseCol);
2mat4 getSkinnedTransform();
3void default_scatter(vec3 viewVec, vec3 lightDir);
4
5attribute vec4 materialColor; //2
6
7attribute vec4 binormal; //6
8attribute vec4 clothing; //4
9
10attribute vec4 gWindDir; //7
11attribute vec4 gSinWaveParams; //3
12attribute vec4 gGravity; //5
13
14const vec4 gMinMaxConstants = vec4(1.0, 0.166666, 0.0083143, .00018542); // #minimax-generated coefficients
15const vec4 gPiConstants = vec4(0.159154943, 6.28318530, 3.141592653, 1.5707963); // # {1/2PI, 2PI, PI, PI/2}
16
17void main()
18{
19 gl_TexCoord[0] = gl_MultiTexCoord0;
20
21 vec4 pos;
22 mat4 trans = getSkinnedTransform();
23
24 vec3 norm;
25 norm.x = dot(trans[0].xyz, gl_Normal);
26 norm.y = dot(trans[1].xyz, gl_Normal);
27 norm.z = dot(trans[2].xyz, gl_Normal);
28 norm = normalize(norm);
29
30 vec3 binorm;
31 binorm.x = dot(trans[0].xyz, binormal.xyz);
32 binorm.y = dot(trans[1].xyz, binormal.xyz);
33 binorm.z = dot(trans[2].xyz, binormal.xyz);
34 norm = normalize(norm);
35
36 //wind
37 vec4 windEffect;
38 windEffect = vec4(dot(norm, gWindDir.xyz)); // DP3 windEffect, blendNorm, gWindDir;
39 pos.x = dot(trans[2].xyz, gl_Vertex.xyz); // DP3 blendPos.x, blendMatZ, iPos;
40 windEffect.xyz = pos.x * vec3(0.015, 0.015, 0.015)
41 + windEffect.xyz; // MAD windEffect.xyz, blendPos.x, {0.015, 0.015, 0.015, 0}, windEffect;
42 windEffect.w = windEffect.w * 2.0 + 1.0; // MAD windEffect.w, windEffect, {0, 0, 0, 2}, {0, 0, 0, 1}; # move wind offset value to [-1, 3]
43 windEffect.w = windEffect.w*gWindDir.w; // MUL windEffect.w, windEffect, gWindDir; # modulate wind strength
44
45 windEffect.xyz = windEffect.xyz*gSinWaveParams.xyz
46 +vec3(gSinWaveParams.w); // MAD windEffect.xyz, windEffect, gSinWaveParams, gSinWaveParams.w; # use sin wave params to scale and offset input
47
48
49 //reduce to period of 2 PI
50 vec4 temp1, temp0, temp2, offsetPos;
51 temp1.xyz = windEffect.xyz * gPiConstants.x; // MUL temp1.xyz, windEffect, gPiConstants.x; # change input as multiple of [0-2PI] to [0-1]
52 temp0.y = mod(temp1.x,1.0); // EXP temp0, temp1.x; # find mod(x, 1)
53 windEffect.x = temp0.y * gPiConstants.y; // MUL windEffect.x, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
54 temp1.z = temp1.z - gPiConstants.w; // ADD temp1.z, temp1.z, -gPiConstants.w; # shift normal oscillation by PI/2
55 temp0.y = mod(temp1.z,1.0); // EXP temp0, temp1.z; # find mod(x, 1)
56
57 windEffect.z = temp0.y * gPiConstants.y; // MUL windEffect.z, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
58 windEffect.xyz = windEffect.xyz + vec3(-3.141592); // # offset to [-PI, PI]
59 // ADD windEffect.xyz, windEffect, {-3.141592, -3.141592, -3.141592, -3.141592};
60
61 //calculate sinusoid
62 vec4 sinWave;
63 temp1 = windEffect*windEffect; // MUL temp1, windEffect, windEffect; # x^2
64 sinWave = -temp1 * gMinMaxConstants.w
65 + vec4(gMinMaxConstants.z); // MAD sinWave, -temp1, gMinMaxConstants.w, gMinMaxConstants.z; # y = -(x^2)/7! + 1/5!
66 sinWave = sinWave * -temp1 + vec4(gMinMaxConstants.y); // MAD sinWave, sinWave, -temp1, gMinMaxConstants.y; # y = -(x^2) * (-(x^2)/7! + 1/5!) + 1/3!
67 sinWave = sinWave * -temp1 + vec4(gMinMaxConstants.x); // MAD sinWave, sinWave, -temp1, gMinMaxConstants.x; # y = -(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1
68 sinWave = sinWave * windEffect; // MUL sinWave, sinWave, windEffect; # y = x * (-(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1)
69
70 // sinWave.x holds sin(norm . wind_direction) with primary frequency
71 // sinWave.y holds sin(norm . wind_direction) with secondary frequency
72 // sinWave.z hold cos(norm . wind_direction) with primary frequency
73 sinWave.xyz = sinWave.xyz * gWindDir.w
74 + vec3(windEffect.w); // MAD sinWave.xyz, sinWave, gWindDir.w, windEffect.w; # multiply by wind strength in gWindDir.w [-wind, wind]
75
76 // add normal facing bias offset [-wind,wind] -> [-wind - .25, wind + 1]
77 temp1 = vec4(dot(norm, gGravity.xyz)); // DP3 temp1, blendNorm, gGravity; # how much is this normal facing in direction of gGravity?
78 temp1 = min(temp1, vec4(0.2,0.0,0.0,0.0)); // MIN temp1, temp1, {0.2, 0, 0, 0}; # clamp [-1, 1] to [-1, 0.2]
79 temp1 = temp1*vec4(1.5,0.0,0.0,0.0); // MUL temp1, temp1, {1.5, 0, 0, 0}; # scale from [-1,0.2] to [-1.5, 0.3]
80 sinWave.x = sinWave.x + temp1.x; // ADD sinWave.x, sinWave, temp1; # add gGravity effect to sinwave (only primary frequency)
81 sinWave.xyz = sinWave.xyz * clothing.w; // MUL sinWave.xyz, sinWave, iClothing.w; # modulate by clothing coverage
82
83 sinWave.xyz = max(sinWave.xyz, vec3(-1.0, -1.0, -1.0)); // MAX sinWave.xyz, sinWave, {-1, -1, -1, -1}; # clamp to underlying body shape
84 offsetPos = clothing * sinWave.x; // MUL offsetPos, iClothing, sinWave.x; # multiply wind effect times clothing displacement
85 temp2 = gWindDir*sinWave.z + vec4(norm,0); // MAD temp2, gWindDir, sinWave.z, blendNorm; # calculate normal offset due to wind oscillation
86 offsetPos = vec4(1.0,1.0,1.0,0.0)*offsetPos+gl_Vertex; // MAD offsetPos, {1.0, 1.0, 1.0, 0.0}, offsetPos, iPos; # add to offset vertex position, and zero out effect from w
87 norm += temp2.xyz*2.0; // MAD blendNorm, temp2, {2, 2, 2, 2}, blendNorm; # add sin wave effect on normals (exaggerated)
88
89 //add "backlighting" effect
90 float colorAcc;
91 colorAcc = 1.0 - clothing.w; // SUB colorAcc, {1, 1, 1, 1}, iClothing;
92 norm.z -= colorAcc * 0.2; // MAD blendNorm, colorAcc.w, {0, 0, -0.2, 0}, blendNorm;
93
94 //renormalize normal (again)
95 norm = normalize(norm); // DP3 divisor.w, blendNorm, blendNorm;
96 // RSQ divisor.xyz, divisor.w;
97 // MUL blendNorm.xyz, blendNorm, divisor;
98
99 //project binormal to normal plane to ensure orthogonality
100 temp2 = vec4(dot(norm, binorm)); // DP3 temp2, blendNorm, blendBinorm;
101 binorm = binorm - temp2.xyz; // SUB blendBinorm, blendBinorm, temp2;
102
103 //renormalize binormal
104 binorm = normalize(binorm); // DP3 divisor.w, blendBinorm, blendBinorm;
105 // RSQ divisor.xyz, divisor.w;
106 // MUL blendBinorm.xyz, blendBinorm, divisor;
107
108 pos.x = dot(trans[0], offsetPos);
109 pos.y = dot(trans[1], offsetPos);
110 pos.z = dot(trans[2], offsetPos);
111 pos.w = 1.0;
112
113 vec4 color = calcLighting(pos.xyz, norm, materialColor, gl_Color.rgb);
114 gl_FrontColor = color;
115
116 gl_Position = gl_ProjectionMatrix * pos;
117
118 vec3 N = norm;
119 vec3 B = binorm;
120 vec3 T = cross(N,B);
121
122 //gl_TexCoord[1].xy = gl_MultiTexCoord0.xy + 1.0/512.0 * vec2(dot(T,gl_LightSource[0].position.xyz),
123 // dot(B,gl_LightSource[0].position.xyz));
124
125 gl_TexCoord[2] = vec4(pos.xyz, 1.0);
126 default_scatter(pos.xyz, gl_LightSource[0].position.xyz);
127
128} \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/shaders/class3/environment/groundF.glsl b/linden/indra/newview/app_settings/shaders/class3/environment/groundF.glsl
new file mode 100644
index 0000000..8618dad
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class3/environment/groundF.glsl
@@ -0,0 +1,12 @@
1vec4 getScatter(vec3 viewVec, vec3 lightDir);
2
3varying vec3 lightd;
4varying vec3 viewVec;
5
6void main()
7{
8 vec4 color = gl_Color;
9 vec4 haze = getScatter(viewVec, lightd) * vec4(gl_Fog.color.rgb, 1.0);
10 color.rgb = haze.rgb + haze.a * color.rgb;
11 gl_FragColor = color;
12}
diff --git a/linden/indra/newview/app_settings/shaders/class3/environment/groundV.glsl b/linden/indra/newview/app_settings/shaders/class3/environment/groundV.glsl
new file mode 100644
index 0000000..a6f5270
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class3/environment/groundV.glsl
@@ -0,0 +1,11 @@
1varying vec3 lightd;
2varying vec3 viewVec;
3
4void main()
5{
6 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
7 lightd = gl_LightSource[0].position.xyz;
8 viewVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
9
10 gl_FrontColor = gl_Color;
11}
diff --git a/linden/indra/newview/app_settings/shaders/class3/environment/scatterF.glsl b/linden/indra/newview/app_settings/shaders/class3/environment/scatterF.glsl
new file mode 100644
index 0000000..7a9245f
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class3/environment/scatterF.glsl
@@ -0,0 +1,25 @@
1uniform sampler2D scatterMap;
2
3//for per-pixel scatter
4vec4 getScatter(vec3 viewVec, vec3 lightDir)
5{
6 vec2 scatterCoord;
7 scatterCoord.x = length(viewVec);
8 vec3 normVec = viewVec / scatterCoord.x;
9 scatterCoord.y = dot(normVec, lightDir)*0.5 + 0.5;
10 scatterCoord.x = scatterCoord.x / gl_Fog.end;
11 scatterCoord.x *= scatterCoord.x; // HACK!! Remove this when we can push the view distance farther out
12 return texture2D(scatterMap, scatterCoord) * vec4(gl_Fog.color.rgb, 1.0);
13}
14
15void applyScatter(inout vec3 color, vec4 haze)
16{
17 color.rgb = haze.rgb + haze.a * color.rgb;
18}
19
20//for per-vertex scatter
21void applyScatter(inout vec3 color)
22{
23 vec4 haze = texture2D(scatterMap, gl_TexCoord[5].xy) * vec4(gl_Fog.color.rgb, 1.0);
24 color.rgb = haze.rgb + haze.a * color.rgb;
25}
diff --git a/linden/indra/newview/app_settings/shaders/class3/environment/scatterV.glsl b/linden/indra/newview/app_settings/shaders/class3/environment/scatterV.glsl
new file mode 100644
index 0000000..c9ebd9e
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class3/environment/scatterV.glsl
@@ -0,0 +1,16 @@
1
2vec2 getScatterCoord(vec3 viewVec, vec3 lightDir)
3{
4 vec2 scatterCoord;
5 scatterCoord.x = length(viewVec);
6 vec3 normVec = normalize(viewVec);
7 scatterCoord.y = dot(normVec, lightDir)*0.5 + 0.5;
8 scatterCoord.x = scatterCoord.x / gl_Fog.end;
9 scatterCoord.x *= scatterCoord.x; // HACK!! Remove this when we can push the view distance farther out
10 return scatterCoord;
11}
12
13void default_scatter(vec3 viewVec, vec3 lightDir)
14{
15 gl_TexCoord[5].xy = getScatterCoord(viewVec, lightDir);
16}
diff --git a/linden/indra/newview/app_settings/shaders/class3/objects/bumpshinyF.glsl b/linden/indra/newview/app_settings/shaders/class3/objects/bumpshinyF.glsl
new file mode 100644
index 0000000..9d1a91d
--- /dev/null
+++ b/linden/indra/newview/app_settings/shaders/class3/objects/bumpshinyF.glsl
@@ -0,0 +1,25 @@
1vec4 getLightColor();
2void applyScatter(inout vec3 col);
3
4uniform samplerCube environmentMap;
5uniform sampler2D diffuseMap;
6uniform sampler2D bumpMap;
7
8void main()
9{
10 vec4 diff = texture2D(diffuseMap, gl_TexCoord[0].xy);
11 float b = texture2D(bumpMap, gl_TexCoord[0].xy).a;
12 b -= texture2D(bumpMap, gl_TexCoord[2].xy).a;
13 vec3 ref = textureCube(environmentMap, gl_TexCoord[1].xyz*vec3(1.0,1.0,1.0-b*5.0)).rgb;
14 vec4 specular = gl_TexCoord[3];
15 vec3 col = mix(getLightColor().rgb * diff.rgb, ref, specular.a)+specular.rgb*diff.rgb;
16 col += col * b;
17 float m = (col.r + col.g + col.b);
18 m *= 1.0/3.0;
19 col = mix(col, vec3(m), -specular.a*specular.a);
20
21 applyScatter(col);
22
23 gl_FragColor.rgb = col;
24 gl_FragColor.a = diff.a;
25}
diff --git a/linden/indra/newview/app_settings/skinned_avatar.vp b/linden/indra/newview/app_settings/skinned_avatar.vp
new file mode 100644
index 0000000..a4adbd5
--- /dev/null
+++ b/linden/indra/newview/app_settings/skinned_avatar.vp
@@ -0,0 +1,146 @@
1!!ARBvp1.0
2# Vertex Program for lit, skinned avatars
3
4# Parameters
5PARAM mat[45] = { program.env[0..44] };
6PARAM embossScale = program.env[63];
7PARAM proj[4] = { state.matrix.projection };
8PARAM modelAmbient = state.lightmodel.ambient;
9PARAM materialDiffuse = state.material.diffuse;
10PARAM lightDir0 = state.light[0].position;
11PARAM diffuseCol0 = state.light[0].diffuse;
12PARAM lightDir1 = state.light[1].position;
13PARAM diffuseCol1 = state.light[1].diffuse;
14PARAM lightPos2 = state.light[2].position;
15PARAM diffuseCol2 = state.light[2].diffuse;
16PARAM lightPos3 = state.light[3].position;
17PARAM diffuseCol3 = state.light[3].diffuse;
18
19# Per vertex inputs
20ATTRIB iPos = vertex.position;
21ATTRIB iNormal = vertex.normal;
22ATTRIB iTex0 = vertex.texcoord[0];
23ATTRIB iTex1 = vertex.texcoord[1];
24ATTRIB iWeight = vertex.attrib[1];
25ATTRIB iBinormal = vertex.attrib[6];
26
27# Temporaries
28TEMP blendBinorm; # result of skinned binormal
29TEMP blendTangent; # result of skinned tangent
30TEMP blendMat;
31TEMP blendPos; # skinned vertex pos
32TEMP dots; # dot product for lighting calculations
33TEMP blendNorm; # skinned normal
34TEMP colorAcc; # color accumulator
35
36ALIAS scaledWeight = colorAcc;
37ALIAS divisor = blendMat; # divisor for normalization process
38ALIAS lightDir = blendBinorm;
39
40ADDRESS address;
41
42# Outputs
43OUTPUT oPos = result.position; #position
44OUTPUT oCol0 = result.color; #primary color
45OUTPUT oTex0 = result.texcoord[0]; #texture coordinate set 0
46OUTPUT oTex1 = result.texcoord[1]; #texture coordinate set 1
47OUTPUT oFog = result.fogcoord; #output fog coord
48
49#fix input blending weight
50ARL address.x, iWeight.x;
51FRC scaledWeight.x, iWeight;
52
53#Output position and normal
54MUL dots, mat[address.x + 1], {1,1,1,1};
55SUB blendMat, dots, mat[address.x + 0];
56MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 0];
57DP4 blendPos.x, blendMat, iPos;
58DP3 blendNorm.x, blendMat, iNormal;
59DP3 blendBinorm.x, blendMat, iBinormal;
60
61MUL dots, mat[address.x + 16], {1,1,1,1};
62SUB blendMat, dots, mat[address.x + 15];
63MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 15];
64DP4 blendPos.y, blendMat, iPos;
65DP3 blendNorm.y, blendMat, iNormal;
66DP3 blendBinorm.y, blendMat, iBinormal;
67
68MUL dots, mat[address.x + 31], {1,1,1,1};
69SUB blendMat, dots, mat[address.x + 30];
70MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 30];
71DP4 blendPos.z, blendMat, iPos;
72DP3 blendNorm.z, blendMat, iNormal;
73DP3 blendBinorm.z, blendMat, iBinormal;
74MOV blendPos.w, {0, 0, 0, 1};
75
76#renormalize normal
77#add "normal spread" effect
78ADD blendNorm, blendNorm, {0, 0, -0.4, 0};
79DP3 divisor.w, blendNorm, blendNorm;
80RSQ divisor.xyz, divisor.w;
81MUL blendNorm.xyz, blendNorm, divisor;
82
83#renormalize binormal
84DP3 divisor.w, blendBinorm, blendBinorm;
85RSQ divisor.xyz, divisor.w;
86MUL blendBinorm.xyz, blendBinorm, divisor;
87
88#Projection
89DP4 oPos.x, proj[0], blendPos;
90DP4 oPos.y, proj[1], blendPos;
91DP4 oPos.z, proj[2], blendPos;
92DP4 oPos.w, proj[3], blendPos;
93
94#tangent = binormal X normal
95XPD blendTangent, blendNorm, blendBinorm;
96
97#oTex1 = iTex0 + LLVector2( lightDir0 * tangent, lightDir0 * binormal );
98DP3 blendTangent.x, lightDir0, blendTangent;
99DP3 blendTangent.y, lightDir0, blendBinorm;
100MAD oTex1, embossScale.x, blendTangent, iTex0;
101
102#Light 0
103DP3 colorAcc.xyz, blendNorm, lightDir0;
104MAD colorAcc.xyz, colorAcc, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
105MAX colorAcc, colorAcc, {0, 0, 0, 0};
106
107# Accumulate color contributions.
108MAD colorAcc.xyz, colorAcc.x, diffuseCol0, modelAmbient;
109MOV colorAcc.w, {0, 0, 0, 1.0};
110
111#Light 1
112DP3 dots.x, blendNorm, lightDir1;
113
114#Light 2
115SUB lightDir, lightPos2, blendPos;
116DP3 divisor.w, lightDir, lightDir;
117RSQ divisor.xyz, divisor.w;
118MUL lightDir.xyz, lightDir, divisor;
119
120DP3 dots.y, blendNorm, lightDir;
121
122#Light 3
123SUB lightDir, lightPos3, blendPos;
124DP3 divisor.w, lightDir, lightDir;
125RSQ divisor.xyz, divisor.w;
126MUL lightDir.xyz, lightDir, divisor;
127
128DP3 dots.z, blendNorm, lightDir;
129
130# Apply Lights
131MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
132MAX dots, dots, {0,0,0,0};
133MAD colorAcc.xyz, dots.x, diffuseCol1, colorAcc;
134MAD colorAcc.xyz, dots.y, diffuseCol2, colorAcc;
135MAD colorAcc.xyz, dots.z, diffuseCol3, colorAcc;
136
137#Output color
138MUL oCol0, materialDiffuse, colorAcc;
139
140#Output tex coordinate
141MOV oTex0, iTex0;
142
143#Output fog
144MOV oFog.x, blendPos.z;
145
146END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp b/linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp
new file mode 100644
index 0000000..5c45118
--- /dev/null
+++ b/linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp
@@ -0,0 +1,179 @@
1!!ARBvp1.0
2# Vertex Program for lit, skinned avatars
3
4# Parameters
5#PARAM gGravity = program.env[62];
6
7PARAM gMat[45] = { program.env[0..44] };
8PARAM gWindDir = program.env[60]; # wind direction with strength stored in w
9PARAM gSinWaveParams = program.env[61]; # frequency, frequency2, frequency, phase
10PARAM gMinMaxConstants = {1.0, 0.166666, 0.0083143, .00018542}; #minimax-generated coefficients
11PARAM gPiConstants = {0.159154943, 6.28318530, 3.141592653, 1.5707963}; # {1/2PI, 2PI, PI, PI/2}
12PARAM gProjection[4] = { state.matrix.projection };
13PARAM gModelAmbient = state.lightmodel.ambient;
14PARAM gMaterialDiffuse = state.material.diffuse;
15PARAM gLightDir0 = state.light[0].position;
16PARAM gDiffuseCol0 = state.light[0].diffuse;
17PARAM gLightDir1 = state.light[1].position;
18PARAM gDiffuseCol1 = state.light[1].diffuse;
19PARAM gLightPos2 = state.light[2].position;
20PARAM gDiffuseCol2 = state.light[2].diffuse;
21PARAM gLightPos3 = state.light[3].position;
22PARAM gDiffuseCol3 = state.light[3].diffuse;
23
24# Per vertex inputs
25ATTRIB iPos = vertex.position;
26ATTRIB iNormal = vertex.normal;
27ATTRIB iTex0 = vertex.texcoord;
28ATTRIB iWeight = vertex.attrib[1];
29ATTRIB iClothing = vertex.attrib[4];
30
31# Temporaries
32TEMP blendedPos; # weighted sum of tpos0 and tpos1
33TEMP blendNorm; # weighted sum of eyeNormal0 and eyeNormal1
34TEMP temp0;
35TEMP temp1; # another general purpose temp
36TEMP temp2;
37TEMP windEffect; # amount of displacement from wind
38TEMP blendMatX;
39TEMP blendMatY;
40TEMP blendMatZ;
41
42ALIAS colorAcc = temp0;
43ALIAS sinWave = temp0;
44ALIAS offsetPos = temp1;
45ALIAS dots = temp1; # dot product for lighting calculations
46ALIAS posDelta = windEffect; # movement of vertex according to joint angle
47ALIAS pivot_pos = windEffect;
48ALIAS scaledWeight = temp0;
49ALIAS divisor = temp2;
50ALIAS lightDir = windEffect;
51
52ADDRESS address;
53
54# Outputs
55OUTPUT oPos = result.position; # position
56OUTPUT oCol0 = result.color; # primary color
57OUTPUT oTex0 = result.texcoord; # texture coordinate set 0
58OUTPUT oFog = result.fogcoord; # output fog coordinates
59
60#fix input blending weight
61ARL address.x, iWeight.x;
62FRC scaledWeight.x, iWeight;
63
64# Blend joint matrices
65MUL blendMatX, gMat[address.x + 1], {1,1,1,1};
66SUB blendMatX, blendMatX, gMat[address.x + 0];
67MAD blendMatX, scaledWeight.x, blendMatX, gMat[address.x + 0];
68DP3 blendNorm.x, blendMatX, iNormal;
69
70MUL blendMatY, gMat[address.x + 16], {1,1,1,1};
71SUB blendMatY, blendMatY, gMat[address.x + 15];
72MAD blendMatY, scaledWeight.x, blendMatY, gMat[address.x + 15];
73DP3 blendNorm.y, blendMatY, iNormal;
74
75MUL blendMatZ, gMat[address.x + 31], {1,1,1,1};
76SUB blendMatZ, blendMatZ, gMat[address.x + 30];
77MAD blendMatZ, scaledWeight.x, blendMatZ, gMat[address.x + 30];
78DP3 blendNorm.z, blendMatZ, iNormal;
79
80#wind
81DP3 windEffect, blendNorm, gWindDir;
82MAD windEffect.xyz, windEffect, gSinWaveParams, gSinWaveParams.w; # use sin wave params to scale and offset input
83
84#reduce to period of 2 PI
85MUL temp1.xyz, windEffect, gPiConstants.x; # change input as multiple of [0-2PI] to [0-1]
86EXP temp0, temp1.x; # find mod(x, 1)
87MUL windEffect.x, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
88
89# offset to [-PI, PI]
90ADD windEffect.xyz, windEffect, {-3.141592, -3.141592, -3.141592, -3.141592};
91
92#calculate sinusoid
93MUL temp1, windEffect, windEffect; # x^2
94MAD sinWave, -temp1, gMinMaxConstants.w, gMinMaxConstants.z; # y = -(x^2)/7! + 1/5!
95MAD sinWave, sinWave, -temp1, gMinMaxConstants.y; # y = -(x^2) * (-(x^2)/7! + 1/5!) + 1/3!
96MAD sinWave, sinWave, -temp1, gMinMaxConstants.x; # y = -(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1
97MUL sinWave, sinWave, windEffect; # y = x * (-(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1)
98
99# sinWave.x holds sin(norm . wind_direction)+
100MUL sinWave.xyz, sinWave, gWindDir.w; # multiply by wind strength in gWindDir.w [-wind, wind]
101SUB sinWave.xyz, sinWave, {0.2, 0.2, 0.2, 0.2};
102MUL sinWave.xyz, sinWave, iClothing.w; # modulate by clothing coverage
103
104DP3 temp2.x, iClothing, iClothing;
105MAX temp2.x, temp2, {0, 0, 0, 0.2};
106MUL temp2.x, temp2.x, {3, 0, 0, 0};
107MUL sinWave.x, sinWave, temp2;
108
109#add pseudo-specular effect
110ADD blendNorm, blendNorm, {0, 0, -0.5, 0};
111
112#renormalize normal
113DP3 divisor.w, blendNorm, blendNorm;
114RSQ divisor.xyz, divisor.w;
115MUL blendNorm.xyz, blendNorm, divisor;
116
117#Output position
118DP4 blendedPos.x, blendMatX, iPos;
119DP4 blendedPos.y, blendMatY, iPos;
120DP4 blendedPos.z, blendMatZ, iPos;
121
122MUL offsetPos, gWindDir, sinWave.x; # multiply wind effect times clothing displacement
123MAD blendedPos, {-1.0, -1.0, -1.0, 0.0}, offsetPos, blendedPos; # add to offset vertex position, and zero out effect from w
124
125MOV blendedPos.w, {0, 0, 0, 1};
126
127#Projection
128DP4 oPos.x, gProjection[0], blendedPos; # projection matrix
129DP4 oPos.y, gProjection[1], blendedPos;
130DP4 oPos.z, gProjection[2], blendedPos;
131DP4 oPos.w, gProjection[3], blendedPos;
132
133#Light 0
134DP3 dots.x, blendNorm, gLightDir0;
135MAD dots.x, dots.x, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
136MAX dots, dots, {0, 0, 0, 0};
137
138# Accumulate color contributions.
139MAD temp2, dots.x, gDiffuseCol0, gModelAmbient;
140MOV colorAcc.xyz, temp2;
141
142#Light 1
143DP3 dots.x, blendNorm, gLightDir1;
144
145#Light 2
146SUB lightDir, gLightPos2, blendedPos;
147DP3 divisor.w, lightDir, lightDir;
148RSQ divisor.xyz, divisor.w;
149MUL lightDir.xyz, lightDir, divisor;
150
151DP3 dots.y, blendNorm, lightDir;
152
153#Light 3
154SUB lightDir, gLightPos3, blendedPos;
155DP3 divisor.w, lightDir, lightDir;
156RSQ divisor.xyz, divisor.w;
157MUL lightDir.xyz, lightDir, divisor;
158
159DP3 dots.z, blendNorm, lightDir;
160
161#Apply lights
162MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
163MAX dots, dots, {0, 0, 0, 0};
164MAD colorAcc.xyz, dots.x, gDiffuseCol1, colorAcc;
165MAD colorAcc.xyz, dots.y, gDiffuseCol2, colorAcc;
166MAD colorAcc.xyz, dots.z, gDiffuseCol3, colorAcc;
167
168#Output fog
169# This causes issues on ATI when fog is disabled
170MOV oFog.x, blendedPos.z;
171
172#Output color
173MOV colorAcc.w, {0, 0, 0, 1.0};
174MUL oCol0, gMaterialDiffuse, colorAcc;
175
176#Output tex coordinate
177MOV oTex0, iTex0;
178
179END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_nobump.vp b/linden/indra/newview/app_settings/skinned_avatar_nobump.vp
new file mode 100644
index 0000000..1874e54
--- /dev/null
+++ b/linden/indra/newview/app_settings/skinned_avatar_nobump.vp
@@ -0,0 +1,128 @@
1!!ARBvp1.0
2# Vertex Program for lit, skinned avatars
3
4# Parameters
5PARAM mat[45] = { program.env[0..44] };
6PARAM proj[4] = { state.matrix.projection };
7PARAM modelAmbient = state.lightmodel.ambient;
8PARAM materialDiffuse = state.material.diffuse;
9PARAM lightDir0 = state.light[0].position;
10PARAM diffuseCol0 = state.light[0].diffuse;
11PARAM lightDir1 = state.light[1].position;
12PARAM diffuseCol1 = state.light[1].diffuse;
13PARAM lightPos2 = state.light[2].position;
14PARAM diffuseCol2 = state.light[2].diffuse;
15PARAM lightPos3 = state.light[3].position;
16PARAM diffuseCol3 = state.light[3].diffuse;
17
18# Per vertex inputs
19ATTRIB iPos = vertex.position;
20ATTRIB iNormal = vertex.normal;
21ATTRIB iTex0 = vertex.texcoord[0];
22ATTRIB iWeight = vertex.attrib[1];
23
24# Temporaries
25TEMP blendMat;
26TEMP blendPos; # skinned vertex pos
27TEMP dots; # dot product for lighting calculations
28TEMP blendNorm; # skinned normal
29TEMP colorAcc; # color accumulator
30TEMP lightDir;
31
32
33ALIAS scaledWeight = colorAcc;
34ALIAS divisor = blendMat; # divisor for normalization process
35
36ADDRESS address;
37
38# Outputs
39OUTPUT oPos = result.position; #position
40OUTPUT oCol0 = result.color; #primary color
41OUTPUT oTex0 = result.texcoord[0]; #texture coordinate set 0
42OUTPUT oFog = result.fogcoord; #output fog coord
43
44#fix input blending weight
45ARL address.x, iWeight.x;
46FRC scaledWeight.x, iWeight;
47
48#Output position and normal
49MUL dots, mat[address.x + 1], {1,1,1,1};
50SUB blendMat, dots, mat[address.x + 0];
51MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 0];
52DP4 blendPos.x, blendMat, iPos;
53DP3 blendNorm.x, blendMat, iNormal;
54
55MUL dots, mat[address.x + 16], {1,1,1,1};
56SUB blendMat, dots, mat[address.x + 15];
57MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 15];
58DP4 blendPos.y, blendMat, iPos;
59DP3 blendNorm.y, blendMat, iNormal;
60
61
62MUL dots, mat[address.x + 31], {1,1,1,1};
63SUB blendMat, dots, mat[address.x + 30];
64MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 30];
65DP4 blendPos.z, blendMat, iPos;
66DP3 blendNorm.z, blendMat, iNormal;
67MOV blendPos.w, {0, 0, 0, 1};
68
69#renormalize normal
70#add "backlighting" effect
71ADD blendNorm, blendNorm, {0, 0, -0.2, 0};
72DP3 divisor.w, blendNorm, blendNorm;
73RSQ divisor.xyz, divisor.w;
74MUL blendNorm.xyz, blendNorm, divisor;
75
76
77#Projection
78DP4 oPos.x, proj[0], blendPos;
79DP4 oPos.y, proj[1], blendPos;
80DP4 oPos.z, proj[2], blendPos;
81DP4 oPos.w, proj[3], blendPos;
82
83
84#Light 0
85DP3 colorAcc.xyz, blendNorm, lightDir0;
86MAD colorAcc.xyz, colorAcc, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
87MAX colorAcc, colorAcc, {0, 0, 0, 0};
88
89# Accumulate color contributions.
90MAD colorAcc.xyz, colorAcc.x, diffuseCol0, modelAmbient;
91MOV colorAcc.w, {0, 0, 0, 1.0};
92
93#Light 1
94DP3 dots.x, blendNorm, lightDir1;
95
96#Light 2
97SUB lightDir, lightPos2, blendPos;
98DP3 divisor.w, lightDir, lightDir;
99RSQ divisor.xyz, divisor.w;
100MUL lightDir.xyz, lightDir, divisor;
101
102DP3 dots.y, blendNorm, lightDir;
103
104#Light 3
105SUB lightDir, lightPos3, blendPos;
106DP3 divisor.w, lightDir, lightDir;
107RSQ divisor.xyz, divisor.w;
108MUL lightDir.xyz, lightDir, divisor;
109
110DP3 dots.z, blendNorm, lightDir;
111
112#Apply lights
113MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
114MAX dots, dots, {0, 0, 0, 0};
115MAD colorAcc.xyz, dots.x, diffuseCol1, colorAcc;
116MAD colorAcc.xyz, dots.y, diffuseCol2, colorAcc;
117MAD colorAcc.xyz, dots.z, diffuseCol3, colorAcc;
118
119#Output color
120MUL oCol0, materialDiffuse, colorAcc;
121
122#Output tex coordinate
123MOV oTex0, iTex0;
124
125#Output fog
126MOV oFog.x, blendPos.z;
127
128END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_select.vp b/linden/indra/newview/app_settings/skinned_avatar_select.vp
new file mode 100644
index 0000000..28506b0
--- /dev/null
+++ b/linden/indra/newview/app_settings/skinned_avatar_select.vp
@@ -0,0 +1,60 @@
1!!ARBvp1.0
2# Vertex Program for lit, skinned avatars
3
4# Parameters
5PARAM mat[45] = { program.env[0..44] };
6PARAM proj[4] = { state.matrix.projection };
7PARAM materialDiffuse = state.material.diffuse;
8
9# Per vertex inputs
10ATTRIB iPos = vertex.position;
11ATTRIB iTex0 = vertex.texcoord[0];
12ATTRIB iWeight = vertex.attrib[1];
13
14# Temporaries
15TEMP blendMat;
16TEMP blendPos; # skinned vertex pos
17TEMP childPos;
18TEMP parentPos;
19TEMP dots; # dot product for lighting calculations
20TEMP scaledWeight;
21
22ALIAS divisor = blendMat; # divisor for normalization process
23
24ADDRESS address;
25
26# Outputs
27OUTPUT oPos = result.position; #position
28OUTPUT oCol0 = result.color; #primary color
29OUTPUT oTex0 = result.texcoord[0]; #texture coordinate set 0
30
31#fix input blending weight
32ARL address.x, iWeight.x;
33FRC scaledWeight.x, iWeight;
34
35#Output position and normal
36DP4 parentPos.x, mat[address.x + 0], iPos;
37DP4 parentPos.y, mat[address.x + 15], iPos;
38DP4 parentPos.z, mat[address.x + 30], iPos;
39
40DP4 childPos.x, mat[address.x + 1], iPos;
41DP4 childPos.y, mat[address.x + 16], iPos;
42DP4 childPos.z, mat[address.x + 31], iPos;
43
44SUB blendPos, childPos, parentPos;
45MAD blendPos, scaledWeight.x, blendPos, parentPos;
46MOV blendPos.w, {0, 0, 0, 1};
47
48#Projection
49DP4 oPos.x, proj[0], blendPos;
50DP4 oPos.y, proj[1], blendPos;
51DP4 oPos.z, proj[2], blendPos;
52DP4 oPos.w, proj[3], blendPos;
53
54#Output color
55MOV oCol0, materialDiffuse;
56
57#Output tex coordinate
58MOV oTex0, iTex0;
59
60END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_wind.vp b/linden/indra/newview/app_settings/skinned_avatar_wind.vp
new file mode 100644
index 0000000..5f40086
--- /dev/null
+++ b/linden/indra/newview/app_settings/skinned_avatar_wind.vp
@@ -0,0 +1,211 @@
1!!ARBvp1.0
2# Vertex Program for lit, skinned avatars
3
4# Parameters
5PARAM gMat[45] = { program.env[0..44] };
6PARAM gEmbossScale = program.env[63];
7PARAM gWindDir = program.env[60]; # wind direction with strength stored in w
8PARAM gSinWaveParams = program.env[61]; # frequency, frequency2, frequency, phase
9PARAM gGravity = program.env[62];
10PARAM gMinMaxConstants = {1.0, 0.166666, 0.0083143, .00018542}; #minimax-generated coefficients
11PARAM gPiConstants = {0.159154943, 6.28318530, 3.141592653, 1.5707963}; # {1/2PI, 2PI, PI, PI/2}
12PARAM gProj[4] = { state.matrix.projection };
13PARAM gModelAmbient = state.lightmodel.ambient;
14PARAM gMaterialDiffuse = state.material.diffuse;
15PARAM gLightDir0 = state.light[0].position;
16PARAM gDiffuseCol0 = state.light[0].diffuse;
17PARAM gLightDir1 = state.light[1].position;
18PARAM gDiffuseCol1 = state.light[1].diffuse;
19PARAM gLightPos2 = state.light[2].position;
20PARAM gDiffuseCol2 = state.light[2].diffuse;
21PARAM gLightPos3 = state.light[3].position;
22PARAM gDiffuseCol3 = state.light[3].diffuse;
23
24# Per vertex inputs
25ATTRIB iPos = vertex.position;
26ATTRIB iNormal = vertex.normal;
27ATTRIB iTex0 = vertex.texcoord[0];
28ATTRIB iTex1 = vertex.texcoord[1];
29ATTRIB iWeight = vertex.attrib[1];
30ATTRIB iClothing = vertex.attrib[4];
31ATTRIB iBinormal = vertex.attrib[6];
32
33# Temporaries
34TEMP blendMatX;
35TEMP blendMatY;
36TEMP blendMatZ;
37TEMP blendPos; # weighted sum of tpos0 and tpos1
38TEMP blendNorm; # weighted sum of eyeNormal0 and eyeNormal1
39TEMP blendBinorm; # result of skinned binormal
40TEMP temp0;
41TEMP temp1; # another general purpose temp
42TEMP temp2;
43
44ALIAS blendTangent = temp2; # result of skinned tangent
45
46ALIAS colorAcc = temp0;
47ALIAS offsetPos = temp1;
48ALIAS dots = temp1; # dot product for lighting calculations
49ALIAS scaledWeight = temp0; # vertex weight as decoded from input weight
50ALIAS divisor = temp2;
51ALIAS sinWave = temp0;
52ALIAS windEffect = temp2;
53ALIAS lightDir = blendMatX;
54
55ADDRESS address;
56
57# Outputs
58OUTPUT oPos = result.position; # position
59OUTPUT oCol0 = result.color; # primary color
60OUTPUT oTex0 = result.texcoord[0]; # texture coordinate set 0
61OUTPUT oTex1 = result.texcoord[1]; # texture coordinate set 1
62OUTPUT oFog = result.fogcoord; # output fog coordinates
63
64#fix input blending weight
65ARL address.x, iWeight.x;
66FRC scaledWeight.x, iWeight;
67
68# Blend joint matrices
69MUL blendMatX, gMat[address.x + 1], {1,1,1,1};
70SUB blendMatX, blendMatX, gMat[address.x + 0];
71MAD blendMatX, scaledWeight.x, blendMatX, gMat[address.x + 0];
72DP3 blendNorm.x, blendMatX, iNormal;
73DP3 blendBinorm.x, blendMatX, iBinormal;
74
75MUL blendMatY, gMat[address.x + 16], {1,1,1,1};
76SUB blendMatY, blendMatY, gMat[address.x + 15];
77MAD blendMatY, scaledWeight.x, blendMatY, gMat[address.x + 15];
78DP3 blendNorm.y, blendMatY, iNormal;
79DP3 blendBinorm.y, blendMatY, iBinormal;
80
81MUL blendMatZ, gMat[address.x + 31], {1,1,1,1};
82SUB blendMatZ, blendMatZ, gMat[address.x + 30];
83MAD blendMatZ, scaledWeight.x, blendMatZ, gMat[address.x + 30];
84DP3 blendNorm.z, blendMatZ, iNormal;
85DP3 blendBinorm.z, blendMatZ, iBinormal;
86
87#wind
88DP3 windEffect, blendNorm, gWindDir;
89DP3 blendPos.x, blendMatZ, iPos;
90MAD windEffect.xyz, blendPos.x, {0.015, 0.015, 0.015, 0}, windEffect;
91MAD windEffect.w, windEffect, {0, 0, 0, 2}, {0, 0, 0, 1}; # move wind offset value to [-1, 3]
92MUL windEffect.w, windEffect, gWindDir; # modulate wind strength
93MAD windEffect.xyz, windEffect, gSinWaveParams, gSinWaveParams.w; # use sin wave params to scale and offset input
94
95#reduce to period of 2 PI
96MUL temp1.xyz, windEffect, gPiConstants.x; # change input as multiple of [0-2PI] to [0-1]
97EXP temp0, temp1.x; # find mod(x, 1)
98MUL windEffect.x, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
99ADD temp1.z, temp1.z, -gPiConstants.w; # shift normal oscillation by PI/2
100EXP temp0, temp1.z; # find mod(x, 1)
101
102MUL windEffect.z, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
103
104# offset to [-PI, PI]
105ADD windEffect.xyz, windEffect, {-3.141592, -3.141592, -3.141592, -3.141592};
106
107#calculate sinusoid
108MUL temp1, windEffect, windEffect; # x^2
109MAD sinWave, -temp1, gMinMaxConstants.w, gMinMaxConstants.z; # y = -(x^2)/7! + 1/5!
110MAD sinWave, sinWave, -temp1, gMinMaxConstants.y; # y = -(x^2) * (-(x^2)/7! + 1/5!) + 1/3!
111MAD sinWave, sinWave, -temp1, gMinMaxConstants.x; # y = -(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1
112MUL sinWave, sinWave, windEffect; # y = x * (-(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1)
113
114# sinWave.x holds sin(norm . wind_direction) with primary frequency
115# sinWave.y holds sin(norm . wind_direction) with secondary frequency
116# sinWave.z hold cos(norm . wind_direction) with primary frequency
117MAD sinWave.xyz, sinWave, gWindDir.w, windEffect.w; # multiply by wind strength in gWindDir.w [-wind, wind]
118 # add normal facing bias offset [-wind,wind] -> [-wind - .25, wind + 1]
119DP3 temp1, blendNorm, gGravity; # how much is this normal facing in direction of gGravity?
120MIN temp1, temp1, {0.2, 0, 0, 0}; # clamp [-1, 1] to [-1, 0.2]
121MUL temp1, temp1, {1.5, 0, 0, 0}; # scale from [-1,0.2] to [-1.5, 0.3]
122ADD sinWave.x, sinWave, temp1; # add gGravity effect to sinwave (only primary frequency)
123MUL sinWave.xyz, sinWave, iClothing.w; # modulate by clothing coverage
124#MAD temp2, {1,1,1,1}, iClothing.w, {-1,-1,-1,-1};
125#ADD sinWave, sinWave, temp2;
126MAX sinWave.xyz, sinWave, {-1, -1, -1, -1}; # clamp to underlying body shape
127MUL offsetPos, iClothing, sinWave.x; # multiply wind effect times clothing displacement
128MAD temp2, gWindDir, sinWave.z, blendNorm; # calculate normal offset due to wind oscillation
129MAD offsetPos, {1.0, 1.0, 1.0, 0.0}, offsetPos, iPos; # add to offset vertex position, and zero out effect from w
130MAD blendNorm, temp2, {2, 2, 2, 2}, blendNorm; # add sin wave effect on normals (exaggerated)
131
132#add "backlighting" effect
133SUB colorAcc, {1, 1, 1, 1}, iClothing;
134MAD blendNorm, colorAcc.w, {0, 0, -0.2, 0}, blendNorm;
135
136#renormalize normal (again)
137DP3 divisor.w, blendNorm, blendNorm;
138RSQ divisor.xyz, divisor.w;
139MUL blendNorm.xyz, blendNorm, divisor;
140
141#project binormal to normal plane to ensure orthogonality
142DP3 temp2, blendNorm, blendBinorm;
143SUB blendBinorm, blendBinorm, temp2;
144
145#renormalize binormal
146DP3 divisor.w, blendBinorm, blendBinorm;
147RSQ divisor.xyz, divisor.w;
148MUL blendBinorm.xyz, blendBinorm, divisor;
149
150#tangent = binormal X normal
151XPD blendTangent, blendNorm, blendBinorm;
152
153#oTex1 = iTex0 + LLVector2( gLightDir0 * tangent, gLightDir0 * binormal );
154DP3 blendTangent.x, gLightDir0, blendTangent;
155DP3 blendTangent.y, gLightDir0, blendBinorm;
156MAD oTex1, gEmbossScale.x, blendTangent, iTex0;
157
158#Output position
159DP4 blendPos.x, blendMatX, offsetPos;
160DP4 blendPos.y, blendMatY, offsetPos;
161DP4 blendPos.z, blendMatZ, offsetPos;
162MOV blendPos.w, {0, 0, 0, 1};
163
164#Projection
165DP4 oPos.x, gProj[0], blendPos;
166DP4 oPos.y, gProj[1], blendPos;
167DP4 oPos.z, gProj[2], blendPos;
168DP4 oPos.w, gProj[3], blendPos;
169
170#Light 0
171DP3 colorAcc.x, blendNorm, gLightDir0;
172MAD colorAcc.x, colorAcc.x, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
173MAX colorAcc, colorAcc, {0, 0, 0, 0};
174
175# Accumulate color contributions.
176MAD colorAcc.xyz, colorAcc.x, gDiffuseCol0, gModelAmbient;
177
178#Light 1
179DP3 dots.x, blendNorm, gLightDir1;
180
181#Light 2
182SUB lightDir, gLightPos2, blendPos;
183DP3 divisor.w, lightDir, lightDir;
184RSQ divisor.xyz, divisor.w;
185MUL lightDir, lightDir, divisor;
186DP3 dots.y, blendNorm, lightDir;
187
188#Light 3
189SUB lightDir, gLightPos3, blendPos;
190DP3 divisor.w, lightDir, lightDir;
191RSQ divisor.xyz, divisor.w;
192MUL lightDir, lightDir, divisor;
193DP3 dots.z, blendNorm, lightDir;
194
195MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
196MAX dots, dots, {0, 0, 0, 0};
197MAD colorAcc, dots.x, gDiffuseCol1, colorAcc;
198MAD colorAcc, dots.y, gDiffuseCol2, colorAcc;
199MAD colorAcc, dots.z, gDiffuseCol3, colorAcc;
200
201#Output color
202MOV colorAcc.w, {0, 0, 0, 1.0};
203MUL oCol0, gMaterialDiffuse, colorAcc;
204
205#Output tex coordinate
206MOV oTex0, iTex0;
207
208#Output fog
209MOV oFog.x, blendPos.z;
210
211END
diff --git a/linden/indra/newview/app_settings/std_bump.ini b/linden/indra/newview/app_settings/std_bump.ini
new file mode 100644
index 0000000..9509c35
--- /dev/null
+++ b/linden/indra/newview/app_settings/std_bump.ini
@@ -0,0 +1,18 @@
1LLStandardBumpmap version 1
2
3
4woodgrain bump_woodgrain.tga
5bark bump_bark.tga
6bricks bump_bricks.tga
7checker bump_checker.tga
8concrete bump_concrete.tga
9crustytile bump_crustytile.tga
10cutstone bump_cutstone.tga
11discs bump_discs.tga
12gravel bump_gravel.tga
13petridish bump_petridish.tga
14siding bump_siding.tga
15stonetile bump_stonetile.tga
16stucco bump_stucco.tga
17suction bump_suction.tga
18weave bump_weave.tga
diff --git a/linden/indra/newview/app_settings/trees.xml b/linden/indra/newview/app_settings/trees.xml
new file mode 100644
index 0000000..213ee85
--- /dev/null
+++ b/linden/indra/newview/app_settings/trees.xml
@@ -0,0 +1,24 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<tree_defs>
3 <tree name="Pine 1" species_id="0" texture_id="0187babf-6c0d-5891-ebed-4ecab1426683" droop="60.0" twist="5.0" branches="5.0" depth="1" scale_step="0.7" trunk_depth="6" branch_length="8.0" trunk_length="11.5" leaf_scale="22.0" billboard_scale="39.5" billboard_ratio="1.1" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="20.0" noise_mag="0.5" noise_scale="2.5" taper="0.8" repeat_z="3" />
4 <tree name="Oak" species_id="1" texture_id="8a515889-eac9-fb55-8eba-d2dc09eb32c8" droop="35.0" twist="3.0" branches="4.0" depth="3" scale_step="0.7" trunk_depth="0" branch_length="3.0" trunk_length="3.8" leaf_scale="7.0" billboard_scale="10.25" billboard_ratio="1.0" trunk_aspect="0.15" branch_aspect="0.07" leaf_rotate="0.0" noise_mag="1.2" noise_scale="4.0" taper="0.3" repeat_z="4" />
5 <tree name="Tropical Bush 1" species_id="2" texture_id="5bc11cd6-2f40-071e-a8da-0903394204f9" droop="10.0" twist="0.0" branches="6.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="7.5" billboard_scale="5.0" billboard_ratio="1.25" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
6 <tree name="Palm 1" species_id="3" texture_id="ca4e8c27-473c-eb1c-2f5d-50ee3f07d85c" droop="0.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="0" branch_length="0.7" trunk_length="9.0" leaf_scale="10.0" billboard_scale="13.25" billboard_ratio="1.0" trunk_aspect="0.035" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="0.2" noise_scale="6.0" taper="0.7" repeat_z="10" />
7 <tree name="Dogwood" species_id="4" texture_id="64367bd1-697e-b3e6-0b65-3f862a577366" droop="30.0" twist="0.0" branches="3.0" depth="2" scale_step="0.7" trunk_depth="1" branch_length="2.75" trunk_length="4.0" leaf_scale="5.5" billboard_scale="10.0" billboard_ratio="1.0" trunk_aspect="0.06" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.5" noise_scale="2.0" taper="0.8" repeat_z="3" />
8 <tree name="Tropical Bush 2" species_id="5" texture_id="cdd9a9fc-6d0b-f90d-8416-c72b6019bca8" droop="10.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="6.0" billboard_scale="4.5" billboard_ratio="0.9" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
9 <tree name="Palm 2" species_id="6" texture_id="2d784476-d0db-9979-0cff-9408745a7cf3" droop="0.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="0" branch_length="0.7" trunk_length="10.0" leaf_scale="7.5" billboard_scale="13.5" billboard_ratio="1.0" trunk_aspect="0.035" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="0.2" noise_scale="6.0" taper="0.6" repeat_z="12" />
10 <tree name="Cypress 1" species_id="7" texture_id="fb2ae204-3fd1-df33-594f-c9f882830e66" droop="30.0" twist="0.0" branches="3.0" depth="4" scale_step="0.5" trunk_depth="0" branch_length="10.0" trunk_length="10.0" leaf_scale="70.0" billboard_scale="22.5" billboard_ratio="1.0" trunk_aspect="0.05" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="1.2" noise_scale="1.0" taper="0.5" repeat_z="6" />
11 <tree name="Cypress 2" species_id="8" texture_id="30047cec-269d-408e-0c30-b2603b887268" droop="30.0" twist="0.0" branches="3.0" depth="4" scale_step="0.6" trunk_depth="3.0" branch_length="7.5" trunk_length="10.0" leaf_scale="35.0" billboard_scale="25.0" billboard_ratio="0.8" trunk_aspect="0.05" branch_aspect="0.04" leaf_rotate="0.0" noise_mag="1.2" noise_scale="1.0" taper="0.5" repeat_z="5" />
12 <tree name="Pine 2" species_id="9" texture_id="d691a01c-13b7-578d-57c0-5caef0b4e7e1" droop="50.0" twist="7.5" branches="4.0" depth="2" scale_step="0.7" trunk_depth="6.0" branch_length="6.0" trunk_length="10.0" leaf_scale="15.5" billboard_scale="33.0" billboard_ratio="1.35" trunk_aspect="0.1" branch_aspect="0.08" leaf_rotate="5.0" noise_mag="0.5" noise_scale="2.5" taper="0.7" repeat_z="3" />
13 <tree name="Plumeria" species_id="10" texture_id="6de37e4e-7029-61f5-54b8-f5e63f983f58" droop="8.0" twist="7.0" branches="3.0" depth="2" scale_step="0.6" trunk_depth="0" branch_length="3.0" trunk_length="0.1" leaf_scale="20" billboard_scale="10.0" billboard_ratio="1.35" trunk_aspect="0.10" branch_aspect="0.075" leaf_rotate="0.0" noise_mag="0" noise_scale="0" taper="0.85" repeat_z="2" />
14 <tree name="Winter Pine 1" species_id="11" texture_id="10d2a01a-0818-84b9-4b96-c2eb63256519" droop="90.0" twist="2.5" branches="6.0" depth="1" scale_step="0.66" trunk_depth="8" branch_length="0.0" trunk_length="4" leaf_scale="6.75" billboard_scale="12.5" billboard_ratio="0.6" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.0" noise_scale="2.5" taper="0.85" repeat_z="2" />
15 <tree name="Winter Aspen" species_id="12" texture_id="7c0cf89b-44b1-1ce2-dd74-07102a98ac2a" droop="85.0" twist="3.0" branches="5" depth="1" scale_step="0.6" trunk_depth="8" branch_length="3.0" trunk_length="4.5" leaf_scale="8" billboard_scale="12" billboard_ratio=".675" trunk_aspect="0.06" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.75" noise_scale="2.5" taper="0.8" repeat_z="2" />
16 <tree name="Winter Pine 2" species_id="13" texture_id="67931331-0c02-4876-1255-28770896c6a2" droop="140.0" twist="5.0" branches="6.0" depth="1" scale_step="0.6" trunk_depth="7" branch_length="0.0" trunk_length="3" leaf_scale="5.0" billboard_scale="7.5" billboard_ratio="0.5" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.750" noise_scale="2.5" taper="0.5" repeat_z="2" />
17 <tree name="Eucalyptus" species_id="14" texture_id="a6162133-724b-54df-a12f-51cd070ad6f3" droop="20.0" twist="5.0" branches="3.6" depth="4" scale_step="0.6" trunk_depth="0" branch_length="12.0" trunk_length="8.0" leaf_scale="33.0" billboard_scale="24" billboard_ratio="1.3" trunk_aspect="0.15" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="0" noise_scale="0" taper="0.675" repeat_z="3" />
18 <tree name="Fern" species_id="15" texture_id="8872f2b8-31db-42d8-580a-b3e4a91262de" droop="12.0" twist="0.0" branches="7.0" depth="1" scale_step="0.5" trunk_depth="0.1" branch_length="0.01" trunk_length="0.0" leaf_scale="4" billboard_scale="3.5" billboard_ratio="0.85" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
19 <tree name="Eelgrass" species_id="16" texture_id="96b4de31-f4fa-337d-ec78-451e3609769e" droop="0.0" twist="0.0" branches="5.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="5.0" billboard_scale="3.0" billboard_ratio="1.0" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
20 <tree name="Sea Sword" species_id="17" texture_id="5894e2e7-ab8d-edfa-e61c-18cf16854ba3" droop="0.0" twist="0.0" branches="6.0" depth="1" scale_step="0.7" trunk_depth="1" branch_length="0.0" trunk_length="0.0" leaf_scale="2.0" billboard_scale="2.0" billboard_ratio="1.0" trunk_aspect="1.0" branch_aspect="1.0" leaf_rotate="0.0" noise_mag="0.5" noise_scale="0.0" taper="0.0" repeat_z="1" />
21 <tree name="Kelp 1" species_id="18" texture_id="2caf1179-7861-6ff3-4b7d-46e17780bdfa" droop="-15.0" twist="0.0" branches="1.0" depth="1" scale_step="1.0" trunk_depth="3" branch_length="2.5" trunk_length="0.75" leaf_scale="1.85" billboard_scale="4.9" billboard_ratio="1.0" trunk_aspect="0.04" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.0" noise_scale="2.0" taper="0.8" repeat_z="2" />
22 <tree name="Beach Grass 1" species_id="19" texture_id="18fb888b-e8f1-dce7-7da7-321d651ea6b0" droop="0.0" twist="0.0" branches="4.0" depth="1" scale_step="0.7" trunk_depth="1" branch_length="0.0" trunk_length="0.0" leaf_scale="4.0" billboard_scale="2.5" billboard_ratio="1.2" trunk_aspect="1.0" branch_aspect="1.0" leaf_rotate="0.0" noise_mag="0.5" noise_scale="0.0" taper="0.0" repeat_z="1" />
23 <tree name="Kelp 2" species_id="20" texture_id="2a4880b6-b7a3-690a-2049-bfbe38eafb9f" droop="-15.0" twist="0.0" branches="1.0" depth="1" scale_step="1.0" trunk_depth="3" branch_length="2.5" trunk_length="1.35" leaf_scale="2.0" billboard_scale="4.9" billboard_ratio="1.0" trunk_aspect="0.025" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.0" noise_scale="2.0" taper="0.8" repeat_z="2" />
24</tree_defs>
diff --git a/linden/indra/newview/app_settings/viewerart.ini b/linden/indra/newview/app_settings/viewerart.ini
new file mode 100644
index 0000000..e3d7af4
--- /dev/null
+++ b/linden/indra/newview/app_settings/viewerart.ini
@@ -0,0 +1,503 @@
1version 101
2closebox.tga 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
3close_in_blue.tga e5821134-23c0-4bd0-af06-7fa95b9fb01a
4tearoffbox.tga 74e1a96f-4833-a24d-a1bb-1bce1468b0e7
5tearoff_pressed.tga d2524c13-4ba6-af7c-e305-8ac6cc18d86a
6resize_handle_bottom_right_blue.tga e3690e25-9690-4f6c-a745-e7dcd885285a
7scrollbutton_up_out_blue.tga dad084d7-9a46-452a-b0ff-4b9f1cefdde9
8scrollbutton_up_in_blue.tga a93abdf3-27b5-4e22-a8fa-c48216cd2e3a
9scrollbutton_down_out_blue.tga b4ecdecf-5c8d-44e7-b882-17a77e88ed55
10scrollbutton_down_in_blue.tga d2421bab-2eaf-4863-b8f6-5e4c52519247
11scrollbutton_left_out_blue.tga 43773e8d-49aa-48e0-80f3-a04715f4677a
12scrollbutton_left_in_blue.tga ea137a32-6718-4d05-9c22-7d570d27b2cd
13scrollbutton_right_out_blue.tga 3d700d19-e708-465d-87f2-46c8c0ee7938
14scrollbutton_right_in_blue.tga b749de64-e903-4c3c-ac0b-25fb6fa39cb5
15spin_up_out_blue.tga 56576e6e-6710-4e66-89f9-471b59122794
16spin_up_in_blue.tga c8450082-96a0-4319-8090-d3ff900b4954
17spin_down_out_blue.tga b6d240dd-5602-426f-b606-bbb49a30726d
18spin_down_in_blue.tga a985ac71-052f-48e6-9c33-d931c813ac92
19radio_active_false.tga 7a1ba9b8-1047-4d1e-9cfc-bc478c80b63f
20radio_active_true.tga 52f09e07-5816-4052-953c-94c6c10479b7
21radio_inactive_false.tga 90688481-67ff-4af0-be69-4aa084bcad1e
22radio_inactive_true.tga 1975db39-aa29-4251-aea0-409ac09d414d
23checkbox_enabled_false.tga 05bb64ee-96fd-4243-b74e-f40a41bc53ba
24checkbox_enabled_true.tga cf4a2ed7-1533-4686-9dde-df9a37ddca55
25checkbox_disabled_false.tga 7d94cb59-32a2-49bf-a516-9e5a2045f9d9
26checkbox_disabled_true.tga c817c642-9abd-4236-9287-ae0513fe7d2b
27tab_top_blue.tga 1ed83f57-41cf-4052-a3b4-2e8bb78d8191
28tab_top_selected_blue.tga 16d032e8-817b-4368-8a4e-b7b947ae3889
29tab_bottom_blue.tga bf0a8779-689b-48c3-bb9a-6af546366ef4
30tab_bottom_selected_blue.tga c001d8fd-a869-4b6f-86a1-fdcb106df9c7
31tab_left.tga 1097dcb3-aef9-8152-f471-431d840ea89e
32tab_left_selected.tga bea77041-5835-1661-f298-47e2d32b7a70
33crosshairs.tga 6e1a3980-bf2d-4274-8970-91e60d85fb52
34move_backward_in.tga db11d956-5e7d-4aa5-b39d-7774d339fc5c
35move_backward_out.tga 3ae8bb18-ed97-4cd3-ae5c-d54bc8479fe7
36move_down_in.tga b92a70b9-c841-4c94-b4b3-cee9eb460d48
37move_down_out.tga b5abc9fa-9e62-4e03-bc33-82c4c1b6b689
38move_forward_in.tga 54197a61-f5d1-4c29-95d2-c071d08849cb
39move_forward_out.tga a0eb4021-1b20-4a53-892d-8faa9265a6f5
40move_left_in.tga 724996f5-b956-46f6-9844-4fcfce1d5e83
41move_left_out.tga 82476321-0374-4c26-9567-521535ab4cd7
42move_right_in.tga 7eeb57d2-3f37-454d-a729-8b217b8be443
43move_right_out.tga 1fbe4e60-0607-44d1-a50a-032eff56ae75
44move_turn_left_in.tga 95463c78-aaa6-464d-892d-3a805b6bb7bf
45move_turn_left_out.tga 13a93910-6b44-45eb-ad3a-4d1324c59bac
46move_turn_right_in.tga 5e616d0d-4335-476f-9977-560bccd009da
47move_turn_right_out.tga 5a44fd04-f52b-4c30-8b00-4a31e27614bd
48move_up_out.tga f887146d-829f-4e39-9211-cf872b78f97c
49move_up_in.tga 49b4b357-e430-4b56-b9e0-05b8759c3c82
50cam_rotate_out.tga 88745b46-da05-11d5-8ac0-0003477c4611
51cam_rotate_in.tga 70bf2262-3eed-4996-88ac-076907e8921d
52cam_zoom_out.tga bb02e941-cb3b-4dd3-892a-6841b5de6e45
53cam_zoom_plus_in.tga c7aefd32-ce13-4242-82cc-2631d44ff9d3
54cam_zoom_minus_in.tga deed3f4b-93e9-4183-a3b0-a5a98a6de1bb
55cam_tracking_out.tga 95c4ea0e-e3c2-4904-b847-7d7676139ebb
56cam_tracking_in.tga fe2fc73b-5a64-4a8e-aacc-46fa81faf96a
57direction_arrow.tga 586383e8-4d9b-4fba-9196-2b5938e79c2c
58minimize.tga 34c9398d-bb78-4643-9633-46a2fa3e9637
59minimize_inactive.tga 6e72abba-1378-437f-bf7a-f0c15f3e99a3
60minimize_pressed.tga 39801651-26cb-4926-af57-7af9352c273c
61restore.tga 111b39de-8928-4690-b7b2-e17d5c960277
62restore_inactive.tga 0eafa471-70af-4882-b8c1-40a310929744
63restore_pressed.tga 90a0ed5c-2e7b-4845-9958-a64a1b30f312
64combobox_arrow.tga b31c1335-0e9c-4927-bc90-53277777d9c1
65white.tga 5748decc-f629-461c-9a36-a35a221fe21f
66darkgray.tga 267e26d3-e0e1-41b8-91b1-3b337102928d
67lightgray.tga c520bf46-cc5d-412b-a60b-9f1bd245189f
68eyes.tga 6522e74d-1660-4e7f-b601-6f48c1659a77
69hair.tga 7ca39b4c-bd19-4699-aff7-f93fd03d3e7b
70black.tga e2244626-f22f-4839-8123-1e7baddeb659
71close_inactive_blue.tga 779e4fa3-9b13-f74a-fba9-3886fe9c86ba
72button_disabled_32x128.tga f8124d60-2875-c358-7847-2acb63e5400c
73button_enabled_32x128.tga d8faf8cb-ee6e-b0b5-abd9-bde873ad3461
74button_enabled_selected_32x128.tga 1eddba75-b682-110a-104e-6cdcce616a25
75button_anim_play_selected.tga 119c37bb-24af-45fe-ae11-3a6bc3c85138
76button_anim_pause_selected.tga ad65d67a-777b-fbfa-693d-4bdcfca2acca
77button_anim_pause.tga db2d9c2d-0bbd-21e2-e83a-103ea2def7a8
78button_anim_play.tga 2a7f6738-5d82-2ff3-d419-30ed09cbb72b
79button_anim_stop.tga e10c9e36-d9f6-c8b4-de96-557dccce9205
80button_anim_stop_selected.tga b8c0e0aa-2771-439e-c919-d2f5dad69a1c
81rounded_square.tga 38ce8b3c-fb30-5c59-9926-bd643613f606
82rounded_square_soft.tga 4c95e6bc-fe77-9cb4-b58a-909848042c1e
83badge_ok.tga 211035a7-c313-378d-478c-e80bbd0fde63
84badge_note.tga 13f6e639-b3f9-28da-a1e6-e990a43052b6
85badge_warn.tga 0992d4bc-7af8-4a1f-f2e6-e6c4083b066e
86badge_error.tga 00c50485-8491-ab70-2ea8-43f26fd028e2
87status_money.tga 5863eb7a-1546-6501-533a-6061f73a36b7
88status_health.tga 4330e8ce-b39b-1eb8-c2ec-a97c0b3947b5
89status_fly.tga 0e058115-5b8f-c3d7-dcaa-9623d92885d1
90status_build.tga 175a6b75-45c9-c2c2-4765-bf37a3909b53
91status_busy.tga beb0d821-6725-abdf-032d-1f70cdabde82
92status_scripts.tga 4cc1afcd-04dd-178f-e074-0f9dc730ab45
93status_buy_currency.tga f43a535a-59ac-26e3-84bc-c786735fabe4
94status_buy_currency_pressed.tga bfa5be70-37c7-8126-fecd-df55390954d5
95status_buy_land.tga 1a0edac5-3e50-fc9b-2752-70c1f69cb959
96status_buy_land_pressed.tga 257647b7-199f-99ff-8be9-f6753289a3aa
97terrain_dirt.tga b8d3965a-ad78-bf43-699b-bff8eca6c975
98terrain_grass.tga abb783e6-3e93-26c0-248a-247666855da3
99terrain_mountain.tga 179cdabd-398a-9b6b-1391-4dc333ba321f
100terrain_rock.tga beb169c7-11ea-fff2-efe5-0f24dc881df2
101terrain_dirt_detail.tga 0bc58228-74a0-7e83-89bc-5c23464bcec5
102terrain_grass_detail.tga 63338ede-0037-c4fd-855b-015d77112fc8
103terrain_mountain_detail.tga 303cd381-8560-7579-23f1-f0a880799740
104terrain_rock_detail.tga 53a2f406-4895-1d13-d541-d2e3b86bc19c
105square_btn_32x128.tga b28df901-6b8d-d31c-7903-4eb9676d4bfc
106square_btn_selected_32x128.tga c48c9e95-191b-96d3-08b2-6e8ada58b651
107tree_pine_1.tga 0187babf-6c0d-5891-ebed-4ecab1426683
108tree_oak.tga 8a515889-eac9-fb55-8eba-d2dc09eb32c8
109tree_tropical_1.tga 5bc11cd6-2f40-071e-a8da-0903394204f9
110tree_palm_1.tga ca4e8c27-473c-eb1c-2f5d-50ee3f07d85c
111tree_dogwood.tga 64367bd1-697e-b3e6-0b65-3f862a577366
112tree_tropical_2.tga cdd9a9fc-6d0b-f90d-8416-c72b6019bca8
113tree_palm_2.tga 2d784476-d0db-9979-0cff-9408745a7cf3
114tree_cypress_1.tga fb2ae204-3fd1-df33-594f-c9f882830e66
115tree_cypress_2.tga 30047cec-269d-408e-0c30-b2603b887268
116tree_pine_2.tga d691a01c-13b7-578d-57c0-5caef0b4e7e1
117tree_plumeria.tga 6de37e4e-7029-61f5-54b8-f5e63f983f58
118winter_tree_aspen.tga 7c0cf89b-44b1-1ce2-dd74-07102a98ac2a
119winter_tree_pine_1.tga 10d2a01a-0818-84b9-4b96-c2eb63256519
120winter_tree_pine_2.tga 67931331-0c02-4876-1255-28770896c6a2
121tree_eucalyptus.tga a6162133-724b-54df-a12f-51cd070ad6f3
122tree_fern.tga 8872f2b8-31db-42d8-580a-b3e4a91262de
123tree_eelgrass.tga 96b4de31-f4fa-337d-ec78-451e3609769e
124tree_sea_sword.tga 5894e2e7-ab8d-edfa-e61c-18cf16854ba3
125tree_kelp_1.tga 2caf1179-7861-6ff3-4b7d-46e17780bdfa
126tree_kelp_2.tga 2a4880b6-b7a3-690a-2049-bfbe38eafb9f
127tree_beach_grass_1.tga 18fb888b-e8f1-dce7-7da7-321d651ea6b0
128tool_dozer.tga d2a0d4d4-54eb-4d16-be4b-4eae43845c74
129tool_dozer_active.tga d4afdbbe-1550-4b7d-91de-95731f47e8e3
130tool_land.tga 86fe4df4-0ecb-4382-b9ae-475925a92388
131tool_land_active.tga 34e60587-0791-4a07-8918-f5995fcc22a3
132tool_zoom.tga 27eb8829-fe65-45ed-a49a-73aac42f4b38
133tool_zoom_active.tga 69445f58-5c8e-44e0-9d2e-47408bb43b39
134tool_orbit.tga 06964fe4-033f-448a-95c9-30dc41d1be8b
135tool_orbit_active.tga ee4e07db-3f72-4098-bd4c-aef34515a7bc
136tool_pan.tga a32aa302-0a15-48d2-b2b1-4d69f1161173
137tool_pan_active.tga 24d9ad33-0b42-4eb5-99a3-659d838bc5c0
138inv_folder_texture.tga 743f035b-a049-43f4-16c7-7ec8daa2c481
139inv_folder_sound.tga e10cb910-1e71-da47-bd12-8c53f7793714
140inv_folder_callingcard.tga a3735971-e2b2-d78a-580d-d265cd8f2484
141inv_folder_landmark.tga 9f921155-7c8c-e276-d5ec-03ac9340584d
142inv_folder_script.tga baa5c310-6a6d-cc48-51eb-65196ba31d77
143inv_folder_object.tga 113e5133-fd0d-ee51-4a59-9d67ca10e8a7
144inv_folder_notecard.tga a9e75d84-5073-9cb7-10a9-1ca68ef5c7ba
145inv_folder_clothing.tga f1427d3d-b2e8-97c4-69ab-1f36d4c0e8f0
146inv_folder_bodypart.tga 1fe05580-1d2f-0345-b28b-52b6e3a20e5d
147inv_folder_trash.tga 88ad072e-ea0b-aabd-5ac0-b37862a6eb66
148inv_folder_plain_closed.tga 86f00960-c3e9-9680-145d-3beffd743e9c
149inv_folder_plain_open.tga d15dc243-2d0b-47af-0ce1-ec376464bdc8
150inv_folder_snapshot.tga 6efe85e7-800f-1843-296c-a5b7adffe091
151inv_folder_lostandfound.tga 9a371a04-297d-bacf-0d16-5f49753efe1d
152inv_folder_animation.tga 4d59b3ee-f29d-b912-2bcc-9bb1f8a07ec6
153inv_folder_gesture.tga 4de9129a-9fc1-d759-d739-364293906ba2
154inv_item_texture.tga 19f452d7-4eee-9f46-76cc-5497d17f1dd9
155inv_item_sound.tga eb414d69-c77d-d4e7-66e6-6c2e6f6c1976
156inv_item_callingcard_online.tga 672cc53e-8dc0-ba91-2a4e-574104cf071c
157inv_item_callingcard_offline.tga d0afe86b-2489-7600-55b7-6abb0a63d9f9
158inv_item_landmark.tga bf25a2a0-85da-7fa0-0993-e461768d0221
159inv_item_landmark_visited.tga 229fac85-5428-4ab7-adeb-eb8389e91092
160inv_item_script.tga 59a3df81-ed76-06c9-7264-6dada535e7a3
161inv_item_clothing.tga 34dfe476-8e26-0e3a-11cf-76cc4a7126ce
162inv_item_object.tga 0f0780a0-89c4-742a-ef28-26405a41cf85
163inv_item_notecard.tga 23ce8a2c-9ea2-d863-6572-806f0645b0c7
164inv_item_bodypart.tga d2a5362d-5c55-57dd-a9e9-5c814d1ddc16
165inv_item_attach.tga 5bcae41e-aa5d-02f8-edf1-605ebdd875ab
166inv_item_snapshot.tga 3810d584-b092-7caa-57e0-010f192b9659
167inv_item_eyes.tga eaa5fd96-5c25-06ef-2280-7ef20203e167
168inv_item_gloves.tga 117b11cb-c04e-5081-13da-1a8846070fd0
169inv_item_hair.tga 6bca3bf4-ed6d-d438-63a0-2a7066d03a0b
170inv_item_jacket.tga 8df59386-56e0-c811-0443-840da3acb3a5
171inv_item_pants.tga a87a58ca-f857-63b1-0acf-072711ed1bdb
172inv_item_shape.tga 4463e433-4db5-79ef-c1b0-4821b03ddb07
173inv_item_shirt.tga e2ffb62b-6abc-22d6-952d-764759b4d636
174inv_item_shoes.tga cf384fa5-1edd-c37c-2134-283dd4fe3396
175inv_item_skirt.tga 0b43f826-2abc-2944-7d72-10777a51d19b
176inv_item_socks.tga 22137c6d-6ec5-6eee-9a2e-2d7a9e6cbcd4
177inv_item_underpants.tga 2f15dc09-4385-526c-aa5d-d9d516ec7d99
178inv_item_undershirt.tga f72ab629-a3ab-de0c-35c0-5285e27478ce
179inv_item_animation.tga b5cda0d6-d196-ce48-63db-d04323ef8931
180inv_item_gesture.tga 5579245d-d5bf-5f13-46b0-8624490de24c
181pixiesmall.tga 168e6813-096e-07ea-97ae-fd416826f627
182legend.tga ca7609c6-6ec6-32d9-332e-0d8f437ef644
183propertyline.tga e3548c46-8d5e-03da-fcab-4fc36ad818bb
184startup_logo.tga 66864f3c-e095-d9c8-058d-d6575e6ed1b8
185grass_texture_1.tga 79504bf5-c3ec-0763-6563-d843de66d0a1
186grass_texture_2.tga 6c4727b8-ac79-ba44-3b81-f9aa887b47eb
187grass_texture_3.tga 99bd60a2-3250-efc9-2e39-2fbcadefbecc
188grass_texture_4.tga 7a2b3a4a-53c2-53ac-5716-aac7d743c020
189undergrowth_1.tga 8f458549-173b-23ff-d4ff-bfaa5ea2371b
190silhouette.tga da5d4079-7819-6b53-d2a4-dc9929381d7d
191avatar_thumb_bkgrnd.tga 3a7f4f0d-be14-ee78-29e3-fc8b0b2a68d3
192missing_asset.tga 32dfd1c8-7ff6-5909-d983-6d4adfb4255d
193alpha_gradient.tga e97cf410-8e61-7005-ec06-629eba4cd1fb
194alpha_gradient_2d.tga 38b86f85-2575-52a9-a531-23108d8da837
195alpha_noise.tga b9e1cf8a-9660-c020-0c69-18f1ea27268a
196alpha_sizzle.tga e121e2fc-7573-740f-edfd-0d45a9ba486e
197bump_woodgrain.tga 058c75c0-a0d5-f2f8-43f3-e9699a89c2fc
198bump_bark.tga 6c9fa78a-1c69-2168-325b-3e03ffa348ce
199bump_bricks.tga b8eed5f0-64b7-6e12-b67f-43fa8e773440
200bump_checker.tga 9deab416-9c63-78d6-d558-9a156f12044c
201bump_concrete.tga db9d39ec-a896-c287-1ced-64566217021e
202bump_crustytile.tga f2d7b6f6-4200-1e9a-fd5b-96459e950f94
203bump_cutstone.tga d9258671-868f-7511-c321-7baef9e948a4
204bump_discs.tga d21e44ca-ff1c-a96e-b2ef-c0753426b7d9
205bump_gravel.tga 4726f13e-bd07-f2fb-feb0-bfa2ac58ab61
206bump_petridish.tga e569711a-27c2-aad4-9246-0c910239a179
207bump_siding.tga 073c9723-540c-5449-cdd4-0e87fdc159e3
208bump_stonetile.tga ae874d1a-93ef-54fb-5fd3-eb0cb156afc0
209bump_stucco.tga 92e66e00-f56f-598a-7997-048aa64cde18
210bump_suction.tga 83b77fc6-10b4-63ec-4de7-f40629f238c5
211bump_weave.tga 735198cf-6ea0-2550-e222-21d3c6a341ae
212icon_avatar_online.tga 529ed15b-3d41-dcc1-79de-90bf21770b5b
213icon_avatar_offline.tga 34648c67-5bfb-5790-e05e-8bd6600fd087
214icon_event.tga be235ae0-53cf-1d68-b3ae-cf375ed1fb58
215icon_event_mature.tga cc090999-1b3e-2e97-7a38-c9f4afd10297
216icon_group.tga 04237108-a879-5a95-9b0c-b18fd09bc447
217icon_place.tga ba0bac4e-815e-14e1-2895-5065b8c703b3
218icon_top_pick.tga 77ca91a2-4431-aeaf-6249-3dd99c7dd86d
219icon_popular.tga bdd47da5-5b5b-c906-37ad-16aaa64f096f
220icon_for_sale.tga f20728fd-1670-3771-2293-e0dd3f0bcaab
221icon_auction.tga 96abf5b1-335c-6b76-61e3-74ada07f3cb8
222icon_land_for_landless.tga c421ddf2-b9d7-b373-503c-f4c423f37f1c
223icon_day_cycle.tga 5b30a285-f1e3-92b1-dcd3-0d07366ced3e
224icon_lock.tga 9beb8cdd-3dce-53c2-b28e-e1f3bc2ec0a4
225noentrylines.tga 5d3e196b-fd4d-ada7-e4c1-99f8e9f1cfbf
226noentrypasslines.tga ac8f8627-6a30-8da8-d4bd-958668eea7a0
227notify_tip_icon.tga 74ba3584-58ea-9984-5b76-62d37942ab77
228notify_box_icon.tga b2ef2d31-9714-a07b-6ca7-31638166364b
229notify_next.tga 07d0ea4c-af0c-aad1-dbbf-c24020ff2b80
230map_avatar_you_8.tga 02fbdc40-5e07-a6e1-228b-58e10f8335b7
231map_avatar_8.tga 0be58a91-8065-c02b-7a12-2cc14dddbc37
232map_avatar_16.tga db0dadd5-026a-88cf-f5c1-523a0a2daa3e
233map_telehub.tga bf1b2bb0-13b1-40ae-3354-b1b93761bdb4
234map_infohub.tga 85b1a79a-7f6c-9df3-4d6c-17b1a4efb55a
235map_home.tga ae9b8f5f-03a1-2e71-db77-6eb27a1ba181
236map_event.tga 6008be5e-9267-2a3a-9798-e81b076c22ca
237map_event_mature.tga f9cdba28-a227-d613-2f16-ce06209314ae
238map_track_8.tga bfdc7bf6-e2ee-1754-f4df-cc25887714ad
239map_track_16.tga a3878395-ef00-a0e6-ee9a-f45ed6b9ce59
240object_cone.tga c2b8c90a-7dca-26e3-1a63-7aa4a0389cf9
241object_cone_active.tga cf69c64b-f19e-e1f3-a586-42fef31a23be
242object_cube.tga 70c747ac-1de3-a8b9-514d-101753ca6ccb
243object_cube_active.tga f9c5e213-1076-7a7d-7889-52388aad2c1a
244object_cylinder.tga 13e35d95-5f6c-9a91-1766-49dedf9b1267
245object_cylinder_active.tga 3f3e4932-8412-e2a7-cfe9-92caf5978b1b
246object_grass.tga 7ca8e672-920b-4653-3970-1abc91abef58
247object_grass_active.tga d0fc7cc9-646a-6860-cf7c-1d9e58cd6dab
248object_hemi_cone.tga 69d5e60c-739a-40b1-b526-84072121e394
249object_hemi_cone_active.tga 2e0c5435-95bb-1c0d-5da1-42336fb1cfc0
250object_hemi_cylinder.tga f4be3e06-24a8-f86e-acc7-7daefc0572b7
251object_hemi_cylinder_active.tga 67279486-cfc1-3633-de42-85db65db373c
252object_hemi_sphere.tga b67251ab-1716-b9fb-f911-967ba3fe027b
253object_hemi_sphere_active.tga 6c489466-3058-6475-6b1b-e5fc1d49f1f3
254object_pyramid.tga 9dde8b56-2cc4-a932-b63a-38c3a83221ad
255object_pyramid_active.tga e7217b1a-e3d8-e339-d28a-d7714d0b5bee
256object_sphere.tga 7fa122c0-b994-460e-8636-cdc451d67268
257object_sphere_active.tga f2c3bcbc-2904-41a5-1c22-688f176fd1ee
258object_tetrahedron.tga e17db404-9fc5-9534-1038-777c82b2771f
259object_tetrahedron_active.tga 2792ea3b-c052-85fe-d168-a62b2f4e9d7c
260object_tree.tga 710d1bec-fb33-28f1-e77e-ddbb5b51f5ed
261object_tree_active.tga da4835c7-b12a-41dd-11db-dae452f040c2
262object_prism.tga 02935f3a-dcda-3b42-1874-da89d4c12870
263object_prism_active.tga 223aac97-bd2f-ec2e-ad45-5641b77c78f9
264object_torus.tga 19e1f4c9-6aa6-4414-981d-59a1343a6472
265object_torus_active.tga ef2bca77-5004-4547-b00a-3b96e463f89f
266object_tube.tga 7ce81316-a478-480f-961c-435fcbdecaf0
267object_tube_active.tga 55c3e4d1-cfdc-48a8-af32-a34844b91832
268object_ring_active.tga 2c955a73-fa31-237b-a4a1-5c8ede3bae50
269object_ring.tga a7610e41-4647-16d8-0e0e-85a1211c1596
270container_animation.tga c4e657a1-4c86-0159-2da0-32ff948484e6
271container_bodypart.tga 770cb2df-758d-34d5-36c7-e3de06db5b5d
272container_clothing.tga dd90406f-4c8f-a3f9-41df-d562f94f09e0
273container_gesture.tga 59cd31c0-2791-3c48-f740-f0a36c68653e
274container_landmark.tga 24c63386-04f7-ce6f-4ff2-dfb215d2e21f
275container_many_things.tga 849d3292-d9fa-7186-5465-dd7b5fc1ec48
276container_object.tga ad887ae1-2bee-f2c9-6786-5599de3c95c4
277container_script.tga b93bd494-c4bd-bcdf-4a59-35a9497d03f3
278container_sound.tga 5ddea031-cfa3-2776-43e3-c7146c1b4cd6
279container_texture.tga b3f95caf-bd62-bef3-0ded-dea752920629
280avatar_aim_l_bow.bvh 46bb4359-de38-4ed8-6a22-f1f52fe8f506
281avatar_aim_r_bazooka.bvh b5b4a67d-0aee-30d2-72cd-77b333e932ef
282avatar_aim_r_handgun.bvh 3147d815-6338-b932-f011-16b56d9ac18b
283avatar_aim_r_rifle.bvh ea633413-8006-180a-c3ba-96dd1d756720
284avatar_angry_fingerwag.bvh c1bc7f36-3ba0-d844-f93c-93be945d644f
285avatar_angry_tantrum.bvh 11000694-3f41-adc2-606b-eee1d66f3724
286avatar_away.bvh fd037134-85d4-f241-72c6-4f42164fedee
287avatar_backflip.bvh c4ca6188-9127-4f31-0158-23c4e2f93304
288avatar_blowkiss.bvh db84829b-462c-ee83-1e27-9bbee66bd624
289avatar_bow.bvh 82e99230-c906-1403-4d9c-3889dd98daba
290avatar_brush.bvh 349a3801-54f9-bf2c-3bd0-1ac89772af01
291avatar_clap.bvh 9b0c1c4e-8ac7-7969-1494-28c874c4f668
292avatar_courtbow.bvh 9ba1c942-08be-e43a-fb29-16ad440efc50
293avatar_crouch.bvh 201f3fdf-cb1f-dbec-201f-7333e328ae7c
294avatar_crouchwalk.bvh 47f5f6fb-22e5-ae44-f871-73aaaf4a6022
295avatar_dance1.bvh b68a3d7c-de9e-fc87-eec8-543d787e5b0d
296avatar_dance2.bvh 928cae18-e31d-76fd-9cc9-2f55160ff818
297avatar_dance3.bvh 30047778-10ea-1af7-6881-4db7a3a5a114
298avatar_dance4.bvh 951469f4-c7b2-c818-9dee-ad7eea8c30b7
299avatar_dance5.bvh 4bd69a1d-1114-a0b4-625f-84e0a5237155
300avatar_dance6.bvh cd28b69b-9c95-bb78-3f94-8d605ff1bb12
301avatar_dance7.bvh a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6
302avatar_dance8.bvh b0dc417c-1f11-af36-2e80-7e7489fa7cdc
303avatar_dead.bvh 57abaae6-1d17-7b1b-5f98-6d11a6411276
304avatar_drink.bvh 0f86e355-dd31-a61c-fdb0-3a96b9aad05f
305avatar_express_afraid.bvh 6b61c8e8-4747-0d75-12d7-e49ff207a4ca
306avatar_express_anger.bvh 5747a48e-073e-c331-f6f3-7c2149613d3e
307avatar_express_bored.bvh b906c4ba-703b-1940-32a3-0c7f7d791510
308avatar_express_cry.bvh 92624d3e-1068-f1aa-a5ec-8244585193ed
309avatar_express_embarrased.bvh 514af488-9051-044a-b3fc-d4dbf76377c6
310avatar_express_laugh.bvh 18b3a4b5-b463-bd48-e4b6-71eaac76c515
311avatar_express_repulsed.bvh 36f81a92-f076-5893-dc4b-7c3795e487cf
312avatar_express_sad.bvh 0eb702e2-cc5a-9a88-56a5-661a55c0676a
313avatar_express_shrug.bvh 70ea714f-3a97-d742-1b01-590a8fcd1db5
314avatar_express_surprise.bvh 313b9881-4302-73c0-c7d0-0e7a36b6c224
315avatar_express_wink.bvh 869ecdad-a44b-671e-3266-56aef2e3ac2e
316avatar_express_worry.bvh 9f496bd2-589a-709f-16cc-69bf7df1d36c
317avatar_falldown.bvh 666307d9-a860-572d-6fd4-c3ab8865c094
318avatar_female_walk.bvh f5fc7433-043d-e819-8298-f519a119b688
319avatar_fist_pump.bvh 7db00ccd-f380-f3ee-439d-61968ec69c8a
320avatar_fly.bvh aec4610c-757f-bc4e-c092-c6e9caf18daf
321avatar_flyslow.bvh 2b5a38b2-5e00-3a97-a495-4c826bc443e6
322avatar_hello.bvh 9b29cd61-c45b-5689-ded2-91756b8d76a9
323avatar_hold_l_bow.bvh 8b102617-bcba-037b-86c1-b76219f90c88
324avatar_hold_r_bazooka.bvh ef62d355-c815-4816-2474-b1acc21094a6
325avatar_hold_r_handgun.bvh efdc1727-8b8a-c800-4077-975fc27ee2f2
326avatar_hold_r_rifle.bvh 3d94bad0-c55b-7dcc-8763-033c59405d33
327avatar_hover.bvh 4ae8016b-31b9-03bb-c401-b1ea941db41d
328avatar_hover_down.bvh 20f063ea-8306-2562-0b07-5c853b37b31e
329avatar_hover_up.bvh 62c5de58-cb33-5743-3d07-9e4cd4352864
330avatar_impatient.bvh 5ea3991f-c293-392e-6860-91dfa01278a3
331avatar_jump.bvh 2305bd75-1ca9-b03b-1faa-b176b8a8c49e
332avatar_jumpforjoy.bvh 709ea28e-1573-c023-8bf8-520c8bc637fa
333avatar_kick_roundhouse_r.bvh 49aea43b-5ac3-8a44-b595-96100af0beda
334avatar_kissmybutt.bvh 19999406-3a3a-d58c-a2ac-d72e555dcf51
335avatar_land.bvh 7a17b059-12b2-41b1-570a-186368b6aa6f
336avatar_laugh_short.bvh ca5b3f14-3194-7a2b-c894-aa699b718d1f
337avatar_motorcycle_sit.bvh 08464f78-3a8e-2944-cba5-0c94aff3af29
338avatar_musclebeach.bvh 315c3a41-a5f3-0ba4-27da-f893f769e69b
339avatar_no_head.bvh 5a977ed9-7f72-44e9-4c4c-6e913df8ae74
340avatar_no_unhappy.bvh d83fa0e5-97ed-7eb2-e798-7bd006215cb4
341avatar_nyanya.bvh f061723d-0a18-754f-66ee-29a44795a32f
342avatar_peace.bvh b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9
343avatar_point_me.bvh 17c024cc-eef2-f6a0-3527-9869876d7752
344avatar_point_you.bvh ec952cca-61ef-aa3b-2789-4d1344f016de
345avatar_prejump.bvh 7a4e87fe-de39-6fcb-6223-024b00893244
346avatar_punch_l.bvh f3300ad9-3462-1d07-2044-0fef80062da0
347avatar_punch_onetwo.bvh eefc79be-daae-a239-8c04-890f5d23654a
348avatar_punch_r.bvh c8e42d32-7310-6906-c903-cab5d4a34656
349avatar_rps_countdown.bvh 35db4f7e-28c2-6679-cea9-3ee108f7fc7f
350avatar_rps_paper.bvh 0836b67f-7f7b-f37b-c00a-460dc1521f5a
351avatar_rps_rock.bvh 42dd95d5-0bc6-6392-f650-777304946c0f
352avatar_rps_scissors.bvh 16803a9f-5140-e042-4d7b-d28ba247c325
353avatar_run.bvh 05ddbff8-aaa9-92a1-2b74-8fe77a29b445
354avatar_salute.bvh cd7668a6-7011-d7e2-ead8-fc69eff1a104
355avatar_shoot_l_bow.bvh e04d450d-fdb5-0432-fd68-818aaf5935f8
356avatar_shout.bvh 6bd01860-4ebd-127a-bb3d-d1427e8e0c42
357avatar_sit.bvh 1a5fe8ac-a804-8a5d-7cbd-56bd83184568
358avatar_sit_female.bvh b1709c8d-ecd3-54a1-4f28-d55ac0840782
359avatar_sit_generic.bvh 245f3c54-f1c0-bf2e-811f-46d8eeb386e7
360avatar_sit_ground.bvh 1c7600d6-661f-b87b-efe2-d7421eb93c86
361avatar_sit_ground_constrained.bvh 1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e
362avatar_sit_to_stand.bvh a8dee56f-2eae-9e7a-05a2-6fb92b97e21e
363avatar_sleep.bvh f2bed5f9-9d44-39af-b0cd-257b2a17fe40
364avatar_smoke_idle.bvh d2f2ee58-8ad1-06c9-d8d3-3827ba31567a
365avatar_smoke_inhale.bvh 6802d553-49da-0778-9f85-1599a2266526
366avatar_smoke_throw_down.bvh 0a9fb970-8b44-9114-d3a9-bf69cfe804d6
367avatar_snapshot.bvh eae8905b-271a-99e2-4c0e-31106afd100c
368avatar_soft_land.bvh f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57
369avatar_stand.bvh 2408fe9e-df1d-1d7d-f4ff-1384fa7b350f
370avatar_stand_1.bvh 15468e00-3400-bb66-cecc-646d7c14458e
371avatar_stand_2.bvh 370f3a20-6ca6-9971-848c-9a01bc42ae3c
372avatar_stand_3.bvh 42b46214-4b44-79ae-deb8-0df61424ff4b
373avatar_stand_4.bvh f22fed8b-a5ed-2c93-64d5-bdd8b93c889f
374avatar_standup.bvh 3da1d753-028a-5446-24f3-9c9b856d9422
375avatar_stretch.bvh 80700431-74ec-a008-14f8-77575e73693f
376avatar_stride.bvh 1cb562b0-ba21-2202-efb3-30f82cdf9595
377avatar_surf.bvh 41426836-7437-7e89-025d-0aa4d10f1d69
378avatar_sword_strike_r.bvh 85428680-6bf9-3e64-b489-6f81087c24bd
379avatar_talk.bvh 5c682a95-6da4-a463-0bf6-0f5b7be129d1
380avatar_throw_r.bvh aa134404-7dac-7aca-2cba-435f9db875ca
381avatar_tryon_shirt.bvh 83ff59fe-2346-f236-9009-4e3608af64c1
382avatar_turn_180.bvh 038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53
383avatar_turnback_180.bvh 6883a61a-b27b-5914-a61e-dda118a9ee2c
384avatar_turnleft.bvh 56e0ba0d-4a9f-7f27-6117-32f2ebbf6135
385avatar_turnright.bvh 2d6daa51-3192-6794-8e2e-a15f8338ec30
386avatar_type.bvh c541c47f-e0c0-058b-ad1a-d6ae3a4584d9
387avatar_walk.bvh 6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0
388avatar_whisper.bvh 7693f268-06c7-ea71-fa21-2b30d6533f8f
389avatar_whistle.bvh b1ed7982-c68e-a982-7561-52a88a5298c0
390avatar_wink_hollywood.bvh c0c4030f-c02b-49de-24ba-2331f43fe41c
391avatar_yes_happy.bvh b8c8b2a3-9008-1771-3bfc-90924955ab2d
392avatar_yes_head.bvh 15dd911d-be82-2856-26db-27659b142875
393avatar_yoga_float.bvh 42ecd00b-9947-a97c-400a-bbc9174c7aeb
394fringe.tga 8ac54e9d-ec09-d804-60ab-47404a9b4a36
395foot_shadow.tga 14e8a47d-1055-0a68-5d55-eafd9ad3da5b
396img_smoke_poof.tga c734da52-f2ba-f0ba-d59e-15ea49f3d5e9
397img_shot.tga 173b05c7-53a9-4cf8-ce6b-5eec21c5c63f
398folder_arrow.tga 09a324a8-acc1-d9cd-2cbd-7465d90d3a98
399color_swatch_alpha.tga f13db22f-c55c-8bdf-7b1c-221e56fde253
400script_error.tga e5a0ec29-f59e-d29e-2c59-ed66c187c26c
401status_script_debug.tga 7775b5cc-93a5-6efd-0d9b-4e079afac217
402water_normal.tga 822ded49-9a6c-f61c-cb89-6df54f42cdf4
403icon_groupnotice.tga 21579c81-a85e-f11c-2d80-33a4c007d88c
404icon_groupnoticeinventory.tga 8fcca699-08e7-3d58-2f05-86c9d52bbe82
405tab_background_lightgrey.tga c769e547-c307-43ca-2b6a-51cad6d1c527
406tab_background_purple.tga 0ae8a2e9-aff4-249c-fc4a-0f41f89847dd
407tab_background_darkpurple.tga 38ff4f7e-3078-a749-8302-d6cc94b404c4
408smicon_warn.tga f47c17a3-8bfb-3c9f-22b8-77923de7eed9
409uv_test1.tga f43b75f5-9aa5-18ec-d5d9-e6d1b8442613
410uv_test2.tga 300ce95f-3d3f-7c1a-3a22-3fc48f873fb9
411eye_button_active.tga 2b42b375-f9b4-788e-46c7-7ef38762d0ba
412eye_button_inactive.tga be1b7225-98b5-eb2a-2c86-ddaae3328a6e
413account_id_blue.tga 6ab9179a-7308-58db-6c9d-893d3b52bece
414account_id_orange.tga fbe89371-1251-4e77-d2d8-8eeccffe3ca8
415account_id_green.tga 3bf64d5a-38d3-b752-cf52-3d9f8fca353a
416status_push.tga 07d1f523-e327-4d10-20d6-8bc22a6e8f56
417ff_visible_online.tga d609a41f-34c0-7aae-b2c6-2fc3ab26d916
418ff_visible_map.tga 20b52706-c1ab-414a-9dea-1cb788ad5689
419ff_edit_mine.tga 1baee0b9-4b89-39eb-8815-866d82300ab5
420ff_edit_theirs.tga 32e981cd-4700-da5a-7fc7-d573ec3742f4
421inv_item_script_dangerous.tga 0b502db8-6fcd-c442-ecfe-483a0dce875e
422ff_visible_map_button.tga c1079bef-5cf9-90f3-6dcd-48989851c252
423ff_visible_online_button.tga 36749b47-93d6-2c5e-7ebd-d38d30311163
424ff_edit_theirs_button.tga ca229f65-d7e0-133e-1bc2-674abc33f3d5
425ff_edit_mine_button.tga 57f05b46-63d8-c3d5-66d6-8b915746b956
426ff_online_status_button.tga 3b1b6a53-9c8c-568a-22c5-2a8f3e5286f5
427oi_hud_cen_0_0.tga 3c650257-9caf-7cad-b26c-84c9eca560f1
428oi_hud_intro.tga 7611fb3d-9ff2-abd3-d98f-805c1c87e757
429oi_hud_underwater.tga cde61aea-83c2-3001-d598-6b348f7a8e0b
430oi_hud_got_passport.tga 1271838d-d777-b811-7c4c-2a00308bd80a
431oi_hud_texture_off_edge.tga 852be205-b1ea-6356-58c8-8c5ee5a841a6
432oi_hud_texture_on_edge.tga ab11e6ff-a732-be70-67df-c43131274562
433oi_hud_flyingabovewater.tga c9d150d6-2739-5f8b-cce6-3cf98242920a
434oi_hud_walkingabovewater.tga 78284eeb-05f3-ff25-11a0-3cc9dbb30f0c
435oi_hud_landmark.tga 6cd9c221-9d42-a283-256b-09a113a87271
436oi_hud_cus_5_3.tga 7c12f4fb-f502-26d1-a2f3-cdb6aff61663
437oi_hud_cus_5_2.tga c52c9c94-adc0-0f4e-6658-ed33d6ea8829
438oi_hud_cus_5_1.tga 9f6d5d11-6ca9-608c-e8a6-b77989350292
439oi_hud_cus_5_0.tga 2000cff1-119f-2023-66c0-ac5630d2f96e
440oi_hud_cus_4_5.tga f302a935-ccd1-e2f5-3a38-e185cc262f3a
441oi_hud_cus_4_3.tga af8d5b3c-b40f-cea5-b0b2-440fbd84a11a
442oi_hud_cus_4_2.tga 11b26901-8207-12bc-5224-10a12ac4c651
443oi_hud_cus_4_1.tga 41baadb7-1b94-907e-9443-54e92bba77cd
444oi_hud_cus_4_0.tga 9d627f8e-092c-5d32-6c12-ef76ab81cedc
445oi_hud_cus_3_4.tga b196486e-d0d2-4fd7-529a-c84b4495fc74
446oi_hud_cus_3_2.tga 0b81c4bb-de33-e493-7bcb-e7221d97e5e7
447oi_hud_cus_3_1.tga 436dab74-25ae-8b60-c648-50663b7faa1d
448oi_hud_cus_3_0.tga 6c1594de-1e66-273c-a2ab-8f0ffa8b4633
449oi_hud_cus_2_4.tga bb31fe48-8566-eec0-e96b-64025f832b63
450oi_hud_cus_2_2.tga c946959a-26ae-eb66-efa0-20154057789d
451oi_hud_cus_2_1.tga c946959a-26ae-eb66-efa0-20154057789d
452oi_hud_cus_2_0.tga d7833106-b4a8-7666-bde1-64886de289f9
453oi_hud_cus_1_0.tga 811ded22-5940-940c-4821-6fbbfb6611d6
454oi_hud_cus_1_1.tga eda8513b-a343-5109-1fd6-f1c7ad89b703
455oi_hud_cus_1_2.tga 7a4ce18c-e715-34d4-dfee-704c270a8ac8
456oi_hud_cus_1_4.tga d3771c15-ac03-b762-b992-d9fd2fedf38a
457oi_hud_com_4_4.tga d9e1e90d-3cc3-6269-128e-67f7a2b32d26
458oi_hud_com_4_2.tga 0f649a26-6fdb-c73b-ffac-e50fc311d5ce
459oi_hud_com_4_1.tga ae5b1ce6-a2d2-22d2-f532-6280b3bc6adb
460oi_hud_com_4_0.tga 12cda3a0-58c7-dfa8-7f9b-380e5bb8baf9
461oi_hud_com_3_4.tga ff326257-0530-356a-e0f8-be535044e540
462oi_hud_com_3_2.tga 66740ddb-1d56-89f9-f0c9-ae5eb7bb9537
463oi_hud_com_3_1.tga 55d662f4-6a28-6388-7c75-af1c9fd33055
464oi_hud_com_3_0.tga de9d318f-b69e-82f9-0c61-43b868c5ca6b
465oi_hud_com_2_4.tga 01d47e68-400a-d0e1-afb7-d6806d1d477e
466oi_hud_com_2_0.tga 09c98850-27d4-6a12-abae-4af4bba23b6b
467oi_hud_com_1_3.tga 5c2049b9-f797-6608-ca71-758f3716aa90
468oi_hud_com_1_1.tga 1116ff68-cdc4-1cfc-e137-30f8426afeda
469oi_hud_com_1_0.tga bd847d31-f5af-95f7-2b9c-af47d8ba53bd
470oi_hud_nav_4_5.tga 66194280-b087-db94-35d9-41e8f7518515
471oi_hud_nav_4_4.tga 180c4241-e309-4c05-13ee-9080ab69498d
472oi_hud_nav_4_3.tga e98a6ba6-99c6-fa15-84b6-9afadea6c467
473oi_hud_nav_4_2.tga 2e19f352-1893-59a9-949b-4d2cfd3a8222
474oi_hud_nav_4_1.tga 13a1675b-fb5a-19b3-b5a3-74b0a6765f7d
475oi_hud_nav_4_0.tga e7526e8d-b085-b26c-b0ae-2708ec231401
476oi_hud_nav_3_5.tga 5e67b0d0-29a2-6a08-c85e-b12d59e53d6e
477oi_hud_nav_3_4.tga 2ed8fbc2-5c4d-53c2-b289-88baffceab1a
478oi_hud_nav_3_3.tga e0a72f1a-282e-1c1a-2cb7-6423feb41759
479oi_hud_nav_3_2.tga 4bcebb23-da5e-47d9-eac1-e4453f762c8c
480oi_hud_nav_3_1.tga 6ac87575-330e-3a2d-3b80-a34e7b277e50
481oi_hud_nav_3_0.tga f1451e8e-7310-9152-47d5-5d037c28fef3
482oi_hud_nav_2_6.tga c60b42ff-ee60-98e4-e603-ca2470141d4b
483oi_hud_nav_2_5.tga a02b5a1a-bbdb-5556-ae5b-a2e68494755a
484oi_hud_nav_2_4.tga 625535ab-8abf-b3e7-48fb-43f728b77c79
485oi_hud_nav_2_3.tga 00a609c3-5750-3b5a-3ce3-458bdf632203
486oi_hud_nav_2_2.tga 94903387-d37f-092c-e4d2-c190f68577b8
487oi_hud_nav_2_1.tga ee0cd82c-6ce8-8e73-307b-6d0dc77b19e8
488oi_hud_nav_2_0.tga 3e10b379-ed2c-7424-1fe7-bef3558c7536
489oi_hud_nav_1_4.tga bf8d0be8-2012-1664-3ea5-e69a71c206e9
490oi_hud_nav_1_2.tga 72100f87-18a7-fc4a-4793-de281e8b02cc
491oi_hud_nav_1_1.tga b048faf3-60ce-c3a2-d034-36613449d377
492oi_hud_nav_1_0.tga 0ad45106-3b26-6448-0b90-feae8bd46c38
493oi_hud_mov_4_5.tga 7c4a45c2-37dd-312c-c6ab-20896dd0a5a6
494oi_hud_mov_4_3.tga 8a88da1c-3735-c71e-d48a-016df0798de4
495oi_hud_mov_4_2.tga f55ae4d3-7d6a-e6ac-4cf7-03014ce14390
496oi_hud_mov_4_1.tga 1cc3fcf1-35c0-e222-27d2-6905cf5c4cee
497oi_hud_mov_4_0.tga 1ae592dc-46f4-616e-b7c6-0dff3e6f40e5
498oi_hud_mov_3_4.tga 831b39be-99fc-45bd-ba85-708f9dc93bfd
499oi_hud_mov_3_2.tga 9f7e7373-92a9-d66a-ad5a-afb55ca6ac1f
500oi_hud_mov_3_1.tga ab37ed0d-7e66-1f77-3acf-b0fe4b74dbe8
501oi_hud_mov_3_0.tga f5ff1f08-4c92-8606-1854-cc5b9d3e445c
502oi_hud_mov_1_2.tga 1e3abeed-e893-c44e-1f9d-5ecc76d21e5d
503oi_hud_mov_1_0.tga e300fc95-aa94-8e31-c501-ce903cac8b7c
diff --git a/linden/indra/newview/app_settings/viewerart.xml b/linden/indra/newview/app_settings/viewerart.xml
new file mode 100644
index 0000000..dbd2227
--- /dev/null
+++ b/linden/indra/newview/app_settings/viewerart.xml
@@ -0,0 +1,504 @@
1<settings version = "101">
2 <closebox.tga value="47a8c844-cd2a-4b1a-be01-df8b1612fe5d"/>
3 <close_in_blue.tga value="e5821134-23c0-4bd0-af06-7fa95b9fb01a"/>
4 <tearoffbox.tga value="74e1a96f-4833-a24d-a1bb-1bce1468b0e7"/>
5 <tearoff_pressed.tga value="d2524c13-4ba6-af7c-e305-8ac6cc18d86a"/>
6 <resize_handle_bottom_right_blue.tga value="e3690e25-9690-4f6c-a745-e7dcd885285a"/>
7 <scrollbutton_up_out_blue.tga value="dad084d7-9a46-452a-b0ff-4b9f1cefdde9"/>
8 <scrollbutton_up_in_blue.tga value="a93abdf3-27b5-4e22-a8fa-c48216cd2e3a"/>
9 <scrollbutton_down_out_blue.tga value="b4ecdecf-5c8d-44e7-b882-17a77e88ed55"/>
10 <scrollbutton_down_in_blue.tga value="d2421bab-2eaf-4863-b8f6-5e4c52519247"/>
11 <scrollbutton_left_out_blue.tga value="43773e8d-49aa-48e0-80f3-a04715f4677a"/>
12 <scrollbutton_left_in_blue.tga value="ea137a32-6718-4d05-9c22-7d570d27b2cd"/>
13 <scrollbutton_right_out_blue.tga value="3d700d19-e708-465d-87f2-46c8c0ee7938"/>
14 <scrollbutton_right_in_blue.tga value="b749de64-e903-4c3c-ac0b-25fb6fa39cb5"/>
15 <spin_up_out_blue.tga value="56576e6e-6710-4e66-89f9-471b59122794"/>
16 <spin_up_in_blue.tga value="c8450082-96a0-4319-8090-d3ff900b4954"/>
17 <spin_down_out_blue.tga value="b6d240dd-5602-426f-b606-bbb49a30726d"/>
18 <spin_down_in_blue.tga value="a985ac71-052f-48e6-9c33-d931c813ac92"/>
19 <radio_active_false.tga value="7a1ba9b8-1047-4d1e-9cfc-bc478c80b63f"/>
20 <radio_active_true.tga value="52f09e07-5816-4052-953c-94c6c10479b7"/>
21 <radio_inactive_false.tga value="90688481-67ff-4af0-be69-4aa084bcad1e"/>
22 <radio_inactive_true.tga value="1975db39-aa29-4251-aea0-409ac09d414d"/>
23 <checkbox_enabled_false.tga value="05bb64ee-96fd-4243-b74e-f40a41bc53ba"/>
24 <checkbox_enabled_true.tga value="cf4a2ed7-1533-4686-9dde-df9a37ddca55"/>
25 <checkbox_disabled_false.tga value="7d94cb59-32a2-49bf-a516-9e5a2045f9d9"/>
26 <checkbox_disabled_true.tga value="c817c642-9abd-4236-9287-ae0513fe7d2b"/>
27 <tab_top_blue.tga value="1ed83f57-41cf-4052-a3b4-2e8bb78d8191"/>
28 <tab_top_selected_blue.tga value="16d032e8-817b-4368-8a4e-b7b947ae3889"/>
29 <tab_bottom_blue.tga value="bf0a8779-689b-48c3-bb9a-6af546366ef4"/>
30 <tab_bottom_selected_blue.tga value="c001d8fd-a869-4b6f-86a1-fdcb106df9c7"/>
31 <tab_left.tga value="1097dcb3-aef9-8152-f471-431d840ea89e"/>
32 <tab_left_selected.tga value="bea77041-5835-1661-f298-47e2d32b7a70"/>
33 <crosshairs.tga value="6e1a3980-bf2d-4274-8970-91e60d85fb52"/>
34 <move_backward_in.tga value="db11d956-5e7d-4aa5-b39d-7774d339fc5c"/>
35 <move_backward_out.tga value="3ae8bb18-ed97-4cd3-ae5c-d54bc8479fe7"/>
36 <move_down_in.tga value="b92a70b9-c841-4c94-b4b3-cee9eb460d48"/>
37 <move_down_out.tga value="b5abc9fa-9e62-4e03-bc33-82c4c1b6b689"/>
38 <move_forward_in.tga value="54197a61-f5d1-4c29-95d2-c071d08849cb"/>
39 <move_forward_out.tga value="a0eb4021-1b20-4a53-892d-8faa9265a6f5"/>
40 <move_left_in.tga value="724996f5-b956-46f6-9844-4fcfce1d5e83"/>
41 <move_left_out.tga value="82476321-0374-4c26-9567-521535ab4cd7"/>
42 <move_right_in.tga value="7eeb57d2-3f37-454d-a729-8b217b8be443"/>
43 <move_right_out.tga value="1fbe4e60-0607-44d1-a50a-032eff56ae75"/>
44 <move_turn_left_in.tga value="95463c78-aaa6-464d-892d-3a805b6bb7bf"/>
45 <move_turn_left_out.tga value="13a93910-6b44-45eb-ad3a-4d1324c59bac"/>
46 <move_turn_right_in.tga value="5e616d0d-4335-476f-9977-560bccd009da"/>
47 <move_turn_right_out.tga value="5a44fd04-f52b-4c30-8b00-4a31e27614bd"/>
48 <move_up_out.tga value="f887146d-829f-4e39-9211-cf872b78f97c"/>
49 <move_up_in.tga value="49b4b357-e430-4b56-b9e0-05b8759c3c82"/>
50 <cam_rotate_out.tga value="88745b46-da05-11d5-8ac0-0003477c4611"/>
51 <cam_rotate_in.tga value="70bf2262-3eed-4996-88ac-076907e8921d"/>
52 <cam_zoom_out.tga value="bb02e941-cb3b-4dd3-892a-6841b5de6e45"/>
53 <cam_zoom_plus_in.tga value="c7aefd32-ce13-4242-82cc-2631d44ff9d3"/>
54 <cam_zoom_minus_in.tga value="deed3f4b-93e9-4183-a3b0-a5a98a6de1bb"/>
55 <cam_tracking_out.tga value="95c4ea0e-e3c2-4904-b847-7d7676139ebb"/>
56 <cam_tracking_in.tga value="fe2fc73b-5a64-4a8e-aacc-46fa81faf96a"/>
57 <direction_arrow.tga value="586383e8-4d9b-4fba-9196-2b5938e79c2c"/>
58 <minimize.tga value="34c9398d-bb78-4643-9633-46a2fa3e9637"/>
59 <minimize_inactive.tga value="6e72abba-1378-437f-bf7a-f0c15f3e99a3"/>
60 <minimize_pressed.tga value="39801651-26cb-4926-af57-7af9352c273c"/>
61 <restore.tga value="111b39de-8928-4690-b7b2-e17d5c960277"/>
62 <restore_inactive.tga value="0eafa471-70af-4882-b8c1-40a310929744"/>
63 <restore_pressed.tga value="90a0ed5c-2e7b-4845-9958-a64a1b30f312"/>
64 <combobox_arrow.tga value="b31c1335-0e9c-4927-bc90-53277777d9c1"/>
65 <white.tga value="5748decc-f629-461c-9a36-a35a221fe21f"/>
66 <darkgray.tga value="267e26d3-e0e1-41b8-91b1-3b337102928d"/>
67 <lightgray.tga value="c520bf46-cc5d-412b-a60b-9f1bd245189f"/>
68 <eyes.tga value="6522e74d-1660-4e7f-b601-6f48c1659a77"/>
69 <hair.tga value="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b"/>
70 <black.tga value="e2244626-f22f-4839-8123-1e7baddeb659"/>
71 <close_inactive_blue.tga value="779e4fa3-9b13-f74a-fba9-3886fe9c86ba"/>
72 <button_disabled_32x128.tga value="f8124d60-2875-c358-7847-2acb63e5400c"/>
73 <button_enabled_32x128.tga value="d8faf8cb-ee6e-b0b5-abd9-bde873ad3461"/>
74 <button_enabled_selected_32x128.tga value="1eddba75-b682-110a-104e-6cdcce616a25"/>
75 <button_anim_play_selected.tga value="119c37bb-24af-45fe-ae11-3a6bc3c85138"/>
76 <button_anim_pause_selected.tga value="ad65d67a-777b-fbfa-693d-4bdcfca2acca"/>
77 <button_anim_pause.tga value="db2d9c2d-0bbd-21e2-e83a-103ea2def7a8"/>
78 <button_anim_play.tga value="2a7f6738-5d82-2ff3-d419-30ed09cbb72b"/>
79 <button_anim_stop.tga value="e10c9e36-d9f6-c8b4-de96-557dccce9205"/>
80 <button_anim_stop_selected.tga value="b8c0e0aa-2771-439e-c919-d2f5dad69a1c"/>
81 <rounded_square.tga value="38ce8b3c-fb30-5c59-9926-bd643613f606"/>
82 <rounded_square_soft.tga value="4c95e6bc-fe77-9cb4-b58a-909848042c1e"/>
83 <badge_ok.tga value="211035a7-c313-378d-478c-e80bbd0fde63"/>
84 <badge_note.tga value="13f6e639-b3f9-28da-a1e6-e990a43052b6"/>
85 <badge_warn.tga value="0992d4bc-7af8-4a1f-f2e6-e6c4083b066e"/>
86 <badge_error.tga value="00c50485-8491-ab70-2ea8-43f26fd028e2"/>
87 <status_money.tga value="5863eb7a-1546-6501-533a-6061f73a36b7"/>
88 <status_health.tga value="4330e8ce-b39b-1eb8-c2ec-a97c0b3947b5"/>
89 <status_fly.tga value="0e058115-5b8f-c3d7-dcaa-9623d92885d1"/>
90 <status_build.tga value="175a6b75-45c9-c2c2-4765-bf37a3909b53"/>
91 <status_busy.tga value="beb0d821-6725-abdf-032d-1f70cdabde82"/>
92 <status_scripts.tga value="4cc1afcd-04dd-178f-e074-0f9dc730ab45"/>
93 <status_buy_currency.tga value="f43a535a-59ac-26e3-84bc-c786735fabe4"/>
94 <status_buy_currency_pressed.tga value="bfa5be70-37c7-8126-fecd-df55390954d5"/>
95 <status_buy_land.tga value="1a0edac5-3e50-fc9b-2752-70c1f69cb959"/>
96 <status_buy_land_pressed.tga value="257647b7-199f-99ff-8be9-f6753289a3aa"/>
97 <terrain_dirt.tga value="b8d3965a-ad78-bf43-699b-bff8eca6c975"/>
98 <terrain_grass.tga value="abb783e6-3e93-26c0-248a-247666855da3"/>
99 <terrain_mountain.tga value="179cdabd-398a-9b6b-1391-4dc333ba321f"/>
100 <terrain_rock.tga value="beb169c7-11ea-fff2-efe5-0f24dc881df2"/>
101 <terrain_dirt_detail.tga value="0bc58228-74a0-7e83-89bc-5c23464bcec5"/>
102 <terrain_grass_detail.tga value="63338ede-0037-c4fd-855b-015d77112fc8"/>
103 <terrain_mountain_detail.tga value="303cd381-8560-7579-23f1-f0a880799740"/>
104 <terrain_rock_detail.tga value="53a2f406-4895-1d13-d541-d2e3b86bc19c"/>
105 <square_btn_32x128.tga value="b28df901-6b8d-d31c-7903-4eb9676d4bfc"/>
106 <square_btn_selected_32x128.tga value="c48c9e95-191b-96d3-08b2-6e8ada58b651"/>
107 <tree_pine_1.tga value="0187babf-6c0d-5891-ebed-4ecab1426683"/>
108 <tree_oak.tga value="8a515889-eac9-fb55-8eba-d2dc09eb32c8"/>
109 <tree_tropical_1.tga value="5bc11cd6-2f40-071e-a8da-0903394204f9"/>
110 <tree_palm_1.tga value="ca4e8c27-473c-eb1c-2f5d-50ee3f07d85c"/>
111 <tree_dogwood.tga value="64367bd1-697e-b3e6-0b65-3f862a577366"/>
112 <tree_tropical_2.tga value="cdd9a9fc-6d0b-f90d-8416-c72b6019bca8"/>
113 <tree_palm_2.tga value="2d784476-d0db-9979-0cff-9408745a7cf3"/>
114 <tree_cypress_1.tga value="fb2ae204-3fd1-df33-594f-c9f882830e66"/>
115 <tree_cypress_2.tga value="30047cec-269d-408e-0c30-b2603b887268"/>
116 <tree_pine_2.tga value="d691a01c-13b7-578d-57c0-5caef0b4e7e1"/>
117 <tree_plumeria.tga value="6de37e4e-7029-61f5-54b8-f5e63f983f58"/>
118 <winter_tree_aspen.tga value="7c0cf89b-44b1-1ce2-dd74-07102a98ac2a"/>
119 <winter_tree_pine_1.tga value="10d2a01a-0818-84b9-4b96-c2eb63256519"/>
120 <winter_tree_pine_2.tga value="67931331-0c02-4876-1255-28770896c6a2"/>
121 <tree_eucalyptus.tga value="a6162133-724b-54df-a12f-51cd070ad6f3"/>
122 <tree_fern.tga value="8872f2b8-31db-42d8-580a-b3e4a91262de"/>
123 <tree_eelgrass.tga value="96b4de31-f4fa-337d-ec78-451e3609769e"/>
124 <tree_sea_sword.tga value="5894e2e7-ab8d-edfa-e61c-18cf16854ba3"/>
125 <tree_kelp_1.tga value="2caf1179-7861-6ff3-4b7d-46e17780bdfa"/>
126 <tree_kelp_2.tga value="2a4880b6-b7a3-690a-2049-bfbe38eafb9f"/>
127 <tree_beach_grass_1.tga value="18fb888b-e8f1-dce7-7da7-321d651ea6b0"/>
128 <tool_dozer.tga value="d2a0d4d4-54eb-4d16-be4b-4eae43845c74"/>
129 <tool_dozer_active.tga value="d4afdbbe-1550-4b7d-91de-95731f47e8e3"/>
130 <tool_land.tga value="86fe4df4-0ecb-4382-b9ae-475925a92388"/>
131 <tool_land_active.tga value="34e60587-0791-4a07-8918-f5995fcc22a3"/>
132 <tool_zoom.tga value="27eb8829-fe65-45ed-a49a-73aac42f4b38"/>
133 <tool_zoom_active.tga value="69445f58-5c8e-44e0-9d2e-47408bb43b39"/>
134 <tool_orbit.tga value="06964fe4-033f-448a-95c9-30dc41d1be8b"/>
135 <tool_orbit_active.tga value="ee4e07db-3f72-4098-bd4c-aef34515a7bc"/>
136 <tool_pan.tga value="a32aa302-0a15-48d2-b2b1-4d69f1161173"/>
137 <tool_pan_active.tga value="24d9ad33-0b42-4eb5-99a3-659d838bc5c0"/>
138 <inv_folder_texture.tga value="743f035b-a049-43f4-16c7-7ec8daa2c481"/>
139 <inv_folder_sound.tga value="e10cb910-1e71-da47-bd12-8c53f7793714"/>
140 <inv_folder_callingcard.tga value="a3735971-e2b2-d78a-580d-d265cd8f2484"/>
141 <inv_folder_landmark.tga value="9f921155-7c8c-e276-d5ec-03ac9340584d"/>
142 <inv_folder_script.tga value="baa5c310-6a6d-cc48-51eb-65196ba31d77"/>
143 <inv_folder_object.tga value="113e5133-fd0d-ee51-4a59-9d67ca10e8a7"/>
144 <inv_folder_notecard.tga value="a9e75d84-5073-9cb7-10a9-1ca68ef5c7ba"/>
145 <inv_folder_clothing.tga value="f1427d3d-b2e8-97c4-69ab-1f36d4c0e8f0"/>
146 <inv_folder_bodypart.tga value="1fe05580-1d2f-0345-b28b-52b6e3a20e5d"/>
147 <inv_folder_trash.tga value="88ad072e-ea0b-aabd-5ac0-b37862a6eb66"/>
148 <inv_folder_plain_closed.tga value="86f00960-c3e9-9680-145d-3beffd743e9c"/>
149 <inv_folder_plain_open.tga value="d15dc243-2d0b-47af-0ce1-ec376464bdc8"/>
150 <inv_folder_snapshot.tga value="6efe85e7-800f-1843-296c-a5b7adffe091"/>
151 <inv_folder_lostandfound.tga value="9a371a04-297d-bacf-0d16-5f49753efe1d"/>
152 <inv_folder_animation.tga value="4d59b3ee-f29d-b912-2bcc-9bb1f8a07ec6"/>
153 <inv_folder_gesture.tga value="4de9129a-9fc1-d759-d739-364293906ba2"/>
154 <inv_item_texture.tga value="19f452d7-4eee-9f46-76cc-5497d17f1dd9"/>
155 <inv_item_sound.tga value="eb414d69-c77d-d4e7-66e6-6c2e6f6c1976"/>
156 <inv_item_callingcard_online.tga value="672cc53e-8dc0-ba91-2a4e-574104cf071c"/>
157 <inv_item_callingcard_offline.tga value="d0afe86b-2489-7600-55b7-6abb0a63d9f9"/>
158 <inv_item_landmark.tga value="bf25a2a0-85da-7fa0-0993-e461768d0221"/>
159 <inv_item_landmark_visited.tga value="229fac85-5428-4ab7-adeb-eb8389e91092"/>
160 <inv_item_script.tga value="59a3df81-ed76-06c9-7264-6dada535e7a3"/>
161 <inv_item_clothing.tga value="34dfe476-8e26-0e3a-11cf-76cc4a7126ce"/>
162 <inv_item_object.tga value="0f0780a0-89c4-742a-ef28-26405a41cf85"/>
163 <inv_item_notecard.tga value="23ce8a2c-9ea2-d863-6572-806f0645b0c7"/>
164 <inv_item_bodypart.tga value="d2a5362d-5c55-57dd-a9e9-5c814d1ddc16"/>
165 <inv_item_attach.tga value="5bcae41e-aa5d-02f8-edf1-605ebdd875ab"/>
166 <inv_item_snapshot.tga value="3810d584-b092-7caa-57e0-010f192b9659"/>
167 <inv_item_eyes.tga value="eaa5fd96-5c25-06ef-2280-7ef20203e167"/>
168 <inv_item_gloves.tga value="117b11cb-c04e-5081-13da-1a8846070fd0"/>
169 <inv_item_hair.tga value="6bca3bf4-ed6d-d438-63a0-2a7066d03a0b"/>
170 <inv_item_jacket.tga value="8df59386-56e0-c811-0443-840da3acb3a5"/>
171 <inv_item_pants.tga value="a87a58ca-f857-63b1-0acf-072711ed1bdb"/>
172 <inv_item_shape.tga value="4463e433-4db5-79ef-c1b0-4821b03ddb07"/>
173 <inv_item_shirt.tga value="e2ffb62b-6abc-22d6-952d-764759b4d636"/>
174 <inv_item_shoes.tga value="cf384fa5-1edd-c37c-2134-283dd4fe3396"/>
175 <inv_item_skirt.tga value="0b43f826-2abc-2944-7d72-10777a51d19b"/>
176 <inv_item_socks.tga value="22137c6d-6ec5-6eee-9a2e-2d7a9e6cbcd4"/>
177 <inv_item_underpants.tga value="2f15dc09-4385-526c-aa5d-d9d516ec7d99"/>
178 <inv_item_undershirt.tga value="f72ab629-a3ab-de0c-35c0-5285e27478ce"/>
179 <inv_item_animation.tga value="b5cda0d6-d196-ce48-63db-d04323ef8931"/>
180 <inv_item_gesture.tga value="5579245d-d5bf-5f13-46b0-8624490de24c"/>
181 <pixiesmall.tga value="168e6813-096e-07ea-97ae-fd416826f627"/>
182 <legend.tga value="ca7609c6-6ec6-32d9-332e-0d8f437ef644"/>
183 <propertyline.tga value="e3548c46-8d5e-03da-fcab-4fc36ad818bb"/>
184 <startup_logo.tga value="66864f3c-e095-d9c8-058d-d6575e6ed1b8"/>
185 <grass_texture_1.tga value="79504bf5-c3ec-0763-6563-d843de66d0a1"/>
186 <grass_texture_2.tga value="6c4727b8-ac79-ba44-3b81-f9aa887b47eb"/>
187 <grass_texture_3.tga value="99bd60a2-3250-efc9-2e39-2fbcadefbecc"/>
188 <grass_texture_4.tga value="7a2b3a4a-53c2-53ac-5716-aac7d743c020"/>
189 <undergrowth_1.tga value="8f458549-173b-23ff-d4ff-bfaa5ea2371b"/>
190 <silhouette.tga value="da5d4079-7819-6b53-d2a4-dc9929381d7d"/>
191 <avatar_thumb_bkgrnd.tga value="3a7f4f0d-be14-ee78-29e3-fc8b0b2a68d3"/>
192 <missing_asset.tga value="32dfd1c8-7ff6-5909-d983-6d4adfb4255d"/>
193 <alpha_gradient.tga value="e97cf410-8e61-7005-ec06-629eba4cd1fb"/>
194 <alpha_gradient_2d.tga value="38b86f85-2575-52a9-a531-23108d8da837"/>
195 <alpha_noise.tga value="b9e1cf8a-9660-c020-0c69-18f1ea27268a"/>
196 <alpha_sizzle.tga value="e121e2fc-7573-740f-edfd-0d45a9ba486e"/>
197 <bump_woodgrain.tga value="058c75c0-a0d5-f2f8-43f3-e9699a89c2fc"/>
198 <bump_bark.tga value="6c9fa78a-1c69-2168-325b-3e03ffa348ce"/>
199 <bump_bricks.tga value="b8eed5f0-64b7-6e12-b67f-43fa8e773440"/>
200 <bump_checker.tga value="9deab416-9c63-78d6-d558-9a156f12044c"/>
201 <bump_concrete.tga value="db9d39ec-a896-c287-1ced-64566217021e"/>
202 <bump_crustytile.tga value="f2d7b6f6-4200-1e9a-fd5b-96459e950f94"/>
203 <bump_cutstone.tga value="d9258671-868f-7511-c321-7baef9e948a4"/>
204 <bump_discs.tga value="d21e44ca-ff1c-a96e-b2ef-c0753426b7d9"/>
205 <bump_gravel.tga value="4726f13e-bd07-f2fb-feb0-bfa2ac58ab61"/>
206 <bump_petridish.tga value="e569711a-27c2-aad4-9246-0c910239a179"/>
207 <bump_siding.tga value="073c9723-540c-5449-cdd4-0e87fdc159e3"/>
208 <bump_stonetile.tga value="ae874d1a-93ef-54fb-5fd3-eb0cb156afc0"/>
209 <bump_stucco.tga value="92e66e00-f56f-598a-7997-048aa64cde18"/>
210 <bump_suction.tga value="83b77fc6-10b4-63ec-4de7-f40629f238c5"/>
211 <bump_weave.tga value="735198cf-6ea0-2550-e222-21d3c6a341ae"/>
212 <icon_avatar_online.tga value="529ed15b-3d41-dcc1-79de-90bf21770b5b"/>
213 <icon_avatar_offline.tga value="34648c67-5bfb-5790-e05e-8bd6600fd087"/>
214 <icon_event.tga value="be235ae0-53cf-1d68-b3ae-cf375ed1fb58"/>
215 <icon_event_mature.tga value="cc090999-1b3e-2e97-7a38-c9f4afd10297"/>
216 <icon_group.tga value="04237108-a879-5a95-9b0c-b18fd09bc447"/>
217 <icon_place.tga value="ba0bac4e-815e-14e1-2895-5065b8c703b3"/>
218 <icon_top_pick.tga value="77ca91a2-4431-aeaf-6249-3dd99c7dd86d"/>
219 <icon_popular.tga value="bdd47da5-5b5b-c906-37ad-16aaa64f096f"/>
220 <icon_for_sale.tga value="f20728fd-1670-3771-2293-e0dd3f0bcaab"/>
221 <icon_auction.tga value="96abf5b1-335c-6b76-61e3-74ada07f3cb8"/>
222 <icon_land_for_landless.tga value="c421ddf2-b9d7-b373-503c-f4c423f37f1c"/>
223 <icon_day_cycle.tga value="5b30a285-f1e3-92b1-dcd3-0d07366ced3e"/>
224 <icon_lock.tga value="9beb8cdd-3dce-53c2-b28e-e1f3bc2ec0a4"/>
225 <noentrylines.tga value="5d3e196b-fd4d-ada7-e4c1-99f8e9f1cfbf"/>
226 <noentrypasslines.tga value="ac8f8627-6a30-8da8-d4bd-958668eea7a0"/>
227 <notify_tip_icon.tga value="74ba3584-58ea-9984-5b76-62d37942ab77"/>
228 <notify_box_icon.tga value="b2ef2d31-9714-a07b-6ca7-31638166364b"/>
229 <notify_next.tga value="07d0ea4c-af0c-aad1-dbbf-c24020ff2b80"/>
230 <map_avatar_you_8.tga value="02fbdc40-5e07-a6e1-228b-58e10f8335b7"/>
231 <map_avatar_8.tga value="0be58a91-8065-c02b-7a12-2cc14dddbc37"/>
232 <map_avatar_16.tga value="db0dadd5-026a-88cf-f5c1-523a0a2daa3e"/>
233 <map_telehub.tga value="bf1b2bb0-13b1-40ae-3354-b1b93761bdb4"/>
234 <map_infohub.tga value="85b1a79a-7f6c-9df3-4d6c-17b1a4efb55a"/>
235 <map_home.tga value="ae9b8f5f-03a1-2e71-db77-6eb27a1ba181"/>
236 <map_event.tga value="6008be5e-9267-2a3a-9798-e81b076c22ca"/>
237 <map_event_mature.tga value="f9cdba28-a227-d613-2f16-ce06209314ae"/>
238 <map_track_8.tga value="bfdc7bf6-e2ee-1754-f4df-cc25887714ad"/>
239 <map_track_16.tga value="a3878395-ef00-a0e6-ee9a-f45ed6b9ce59"/>
240 <object_cone.tga value="c2b8c90a-7dca-26e3-1a63-7aa4a0389cf9"/>
241 <object_cone_active.tga value="cf69c64b-f19e-e1f3-a586-42fef31a23be"/>
242 <object_cube.tga value="70c747ac-1de3-a8b9-514d-101753ca6ccb"/>
243 <object_cube_active.tga value="f9c5e213-1076-7a7d-7889-52388aad2c1a"/>
244 <object_cylinder.tga value="13e35d95-5f6c-9a91-1766-49dedf9b1267"/>
245 <object_cylinder_active.tga value="3f3e4932-8412-e2a7-cfe9-92caf5978b1b"/>
246 <object_grass.tga value="7ca8e672-920b-4653-3970-1abc91abef58"/>
247 <object_grass_active.tga value="d0fc7cc9-646a-6860-cf7c-1d9e58cd6dab"/>
248 <object_hemi_cone.tga value="69d5e60c-739a-40b1-b526-84072121e394"/>
249 <object_hemi_cone_active.tga value="2e0c5435-95bb-1c0d-5da1-42336fb1cfc0"/>
250 <object_hemi_cylinder.tga value="f4be3e06-24a8-f86e-acc7-7daefc0572b7"/>
251 <object_hemi_cylinder_active.tga value="67279486-cfc1-3633-de42-85db65db373c"/>
252 <object_hemi_sphere.tga value="b67251ab-1716-b9fb-f911-967ba3fe027b"/>
253 <object_hemi_sphere_active.tga value="6c489466-3058-6475-6b1b-e5fc1d49f1f3"/>
254 <object_pyramid.tga value="9dde8b56-2cc4-a932-b63a-38c3a83221ad"/>
255 <object_pyramid_active.tga value="e7217b1a-e3d8-e339-d28a-d7714d0b5bee"/>
256 <object_sphere.tga value="7fa122c0-b994-460e-8636-cdc451d67268"/>
257 <object_sphere_active.tga value="f2c3bcbc-2904-41a5-1c22-688f176fd1ee"/>
258 <object_tetrahedron.tga value="e17db404-9fc5-9534-1038-777c82b2771f"/>
259 <object_tetrahedron_active.tga value="2792ea3b-c052-85fe-d168-a62b2f4e9d7c"/>
260 <object_tree.tga value="710d1bec-fb33-28f1-e77e-ddbb5b51f5ed"/>
261 <object_tree_active.tga value="da4835c7-b12a-41dd-11db-dae452f040c2"/>
262 <object_prism.tga value="02935f3a-dcda-3b42-1874-da89d4c12870"/>
263 <object_prism_active.tga value="223aac97-bd2f-ec2e-ad45-5641b77c78f9"/>
264 <object_torus.tga value="19e1f4c9-6aa6-4414-981d-59a1343a6472"/>
265 <object_torus_active.tga value="ef2bca77-5004-4547-b00a-3b96e463f89f"/>
266 <object_tube.tga value="7ce81316-a478-480f-961c-435fcbdecaf0"/>
267 <object_tube_active.tga value="55c3e4d1-cfdc-48a8-af32-a34844b91832"/>
268 <object_ring_active.tga value="2c955a73-fa31-237b-a4a1-5c8ede3bae50"/>
269 <object_ring.tga value="a7610e41-4647-16d8-0e0e-85a1211c1596"/>
270 <container_animation.tga value="c4e657a1-4c86-0159-2da0-32ff948484e6"/>
271 <container_bodypart.tga value="770cb2df-758d-34d5-36c7-e3de06db5b5d"/>
272 <container_clothing.tga value="dd90406f-4c8f-a3f9-41df-d562f94f09e0"/>
273 <container_gesture.tga value="59cd31c0-2791-3c48-f740-f0a36c68653e"/>
274 <container_landmark.tga value="24c63386-04f7-ce6f-4ff2-dfb215d2e21f"/>
275 <container_many_things.tga value="849d3292-d9fa-7186-5465-dd7b5fc1ec48"/>
276 <container_object.tga value="ad887ae1-2bee-f2c9-6786-5599de3c95c4"/>
277 <container_script.tga value="b93bd494-c4bd-bcdf-4a59-35a9497d03f3"/>
278 <container_sound.tga value="5ddea031-cfa3-2776-43e3-c7146c1b4cd6"/>
279 <container_texture.tga value="b3f95caf-bd62-bef3-0ded-dea752920629"/>
280 <avatar_aim_l_bow.bvh value="46bb4359-de38-4ed8-6a22-f1f52fe8f506"/>
281 <avatar_aim_r_bazooka.bvh value="b5b4a67d-0aee-30d2-72cd-77b333e932ef"/>
282 <avatar_aim_r_handgun.bvh value="3147d815-6338-b932-f011-16b56d9ac18b"/>
283 <avatar_aim_r_rifle.bvh value="ea633413-8006-180a-c3ba-96dd1d756720"/>
284 <avatar_angry_fingerwag.bvh value="c1bc7f36-3ba0-d844-f93c-93be945d644f"/>
285 <avatar_angry_tantrum.bvh value="11000694-3f41-adc2-606b-eee1d66f3724"/>
286 <avatar_away.bvh value="fd037134-85d4-f241-72c6-4f42164fedee"/>
287 <avatar_backflip.bvh value="c4ca6188-9127-4f31-0158-23c4e2f93304"/>
288 <avatar_blowkiss.bvh value="db84829b-462c-ee83-1e27-9bbee66bd624"/>
289 <avatar_bow.bvh value="82e99230-c906-1403-4d9c-3889dd98daba"/>
290 <avatar_brush.bvh value="349a3801-54f9-bf2c-3bd0-1ac89772af01"/>
291 <avatar_clap.bvh value="9b0c1c4e-8ac7-7969-1494-28c874c4f668"/>
292 <avatar_courtbow.bvh value="9ba1c942-08be-e43a-fb29-16ad440efc50"/>
293 <avatar_crouch.bvh value="201f3fdf-cb1f-dbec-201f-7333e328ae7c"/>
294 <avatar_crouchwalk.bvh value="47f5f6fb-22e5-ae44-f871-73aaaf4a6022"/>
295 <avatar_dance1.bvh value="b68a3d7c-de9e-fc87-eec8-543d787e5b0d"/>
296 <avatar_dance2.bvh value="928cae18-e31d-76fd-9cc9-2f55160ff818"/>
297 <avatar_dance3.bvh value="30047778-10ea-1af7-6881-4db7a3a5a114"/>
298 <avatar_dance4.bvh value="951469f4-c7b2-c818-9dee-ad7eea8c30b7"/>
299 <avatar_dance5.bvh value="4bd69a1d-1114-a0b4-625f-84e0a5237155"/>
300 <avatar_dance6.bvh value="cd28b69b-9c95-bb78-3f94-8d605ff1bb12"/>
301 <avatar_dance7.bvh value="a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6"/>
302 <avatar_dance8.bvh value="b0dc417c-1f11-af36-2e80-7e7489fa7cdc"/>
303 <avatar_dead.bvh value="57abaae6-1d17-7b1b-5f98-6d11a6411276"/>
304 <avatar_drink.bvh value="0f86e355-dd31-a61c-fdb0-3a96b9aad05f"/>
305 <avatar_express_afraid.bvh value="6b61c8e8-4747-0d75-12d7-e49ff207a4ca"/>
306 <avatar_express_anger.bvh value="5747a48e-073e-c331-f6f3-7c2149613d3e"/>
307 <avatar_express_bored.bvh value="b906c4ba-703b-1940-32a3-0c7f7d791510"/>
308 <avatar_express_cry.bvh value="92624d3e-1068-f1aa-a5ec-8244585193ed"/>
309 <avatar_express_embarrased.bvh value="514af488-9051-044a-b3fc-d4dbf76377c6"/>
310 <avatar_express_laugh.bvh value="18b3a4b5-b463-bd48-e4b6-71eaac76c515"/>
311 <avatar_express_repulsed.bvh value="36f81a92-f076-5893-dc4b-7c3795e487cf"/>
312 <avatar_express_sad.bvh value="0eb702e2-cc5a-9a88-56a5-661a55c0676a"/>
313 <avatar_express_shrug.bvh value="70ea714f-3a97-d742-1b01-590a8fcd1db5"/>
314 <avatar_express_surprise.bvh value="313b9881-4302-73c0-c7d0-0e7a36b6c224"/>
315 <avatar_express_wink.bvh value="869ecdad-a44b-671e-3266-56aef2e3ac2e"/>
316 <avatar_express_worry.bvh value="9f496bd2-589a-709f-16cc-69bf7df1d36c"/>
317 <avatar_falldown.bvh value="666307d9-a860-572d-6fd4-c3ab8865c094"/>
318 <avatar_female_walk.bvh value="f5fc7433-043d-e819-8298-f519a119b688"/>
319 <avatar_fist_pump.bvh value="7db00ccd-f380-f3ee-439d-61968ec69c8a"/>
320 <avatar_fly.bvh value="aec4610c-757f-bc4e-c092-c6e9caf18daf"/>
321 <avatar_flyslow.bvh value="2b5a38b2-5e00-3a97-a495-4c826bc443e6"/>
322 <avatar_hello.bvh value="9b29cd61-c45b-5689-ded2-91756b8d76a9"/>
323 <avatar_hold_l_bow.bvh value="8b102617-bcba-037b-86c1-b76219f90c88"/>
324 <avatar_hold_r_bazooka.bvh value="ef62d355-c815-4816-2474-b1acc21094a6"/>
325 <avatar_hold_r_handgun.bvh value="efdc1727-8b8a-c800-4077-975fc27ee2f2"/>
326 <avatar_hold_r_rifle.bvh value="3d94bad0-c55b-7dcc-8763-033c59405d33"/>
327 <avatar_hover.bvh value="4ae8016b-31b9-03bb-c401-b1ea941db41d"/>
328 <avatar_hover_down.bvh value="20f063ea-8306-2562-0b07-5c853b37b31e"/>
329 <avatar_hover_up.bvh value="62c5de58-cb33-5743-3d07-9e4cd4352864"/>
330 <avatar_impatient.bvh value="5ea3991f-c293-392e-6860-91dfa01278a3"/>
331 <avatar_jump.bvh value="2305bd75-1ca9-b03b-1faa-b176b8a8c49e"/>
332 <avatar_jumpforjoy.bvh value="709ea28e-1573-c023-8bf8-520c8bc637fa"/>
333 <avatar_kick_roundhouse_r.bvh value="49aea43b-5ac3-8a44-b595-96100af0beda"/>
334 <avatar_kissmybutt.bvh value="19999406-3a3a-d58c-a2ac-d72e555dcf51"/>
335 <avatar_land.bvh value="7a17b059-12b2-41b1-570a-186368b6aa6f"/>
336 <avatar_laugh_short.bvh value="ca5b3f14-3194-7a2b-c894-aa699b718d1f"/>
337 <avatar_motorcycle_sit.bvh value="08464f78-3a8e-2944-cba5-0c94aff3af29"/>
338 <avatar_musclebeach.bvh value="315c3a41-a5f3-0ba4-27da-f893f769e69b"/>
339 <avatar_no_head.bvh value="5a977ed9-7f72-44e9-4c4c-6e913df8ae74"/>
340 <avatar_no_unhappy.bvh value="d83fa0e5-97ed-7eb2-e798-7bd006215cb4"/>
341 <avatar_nyanya.bvh value="f061723d-0a18-754f-66ee-29a44795a32f"/>
342 <avatar_peace.bvh value="b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9"/>
343 <avatar_point_me.bvh value="17c024cc-eef2-f6a0-3527-9869876d7752"/>
344 <avatar_point_you.bvh value="ec952cca-61ef-aa3b-2789-4d1344f016de"/>
345 <avatar_prejump.bvh value="7a4e87fe-de39-6fcb-6223-024b00893244"/>
346 <avatar_punch_l.bvh value="f3300ad9-3462-1d07-2044-0fef80062da0"/>
347 <avatar_punch_onetwo.bvh value="eefc79be-daae-a239-8c04-890f5d23654a"/>
348 <avatar_punch_r.bvh value="c8e42d32-7310-6906-c903-cab5d4a34656"/>
349 <avatar_rps_countdown.bvh value="35db4f7e-28c2-6679-cea9-3ee108f7fc7f"/>
350 <avatar_rps_paper.bvh value="0836b67f-7f7b-f37b-c00a-460dc1521f5a"/>
351 <avatar_rps_rock.bvh value="42dd95d5-0bc6-6392-f650-777304946c0f"/>
352 <avatar_rps_scissors.bvh value="16803a9f-5140-e042-4d7b-d28ba247c325"/>
353 <avatar_run.bvh value="05ddbff8-aaa9-92a1-2b74-8fe77a29b445"/>
354 <avatar_salute.bvh value="cd7668a6-7011-d7e2-ead8-fc69eff1a104"/>
355 <avatar_shoot_l_bow.bvh value="e04d450d-fdb5-0432-fd68-818aaf5935f8"/>
356 <avatar_shout.bvh value="6bd01860-4ebd-127a-bb3d-d1427e8e0c42"/>
357 <avatar_sit.bvh value="1a5fe8ac-a804-8a5d-7cbd-56bd83184568"/>
358 <avatar_sit_female.bvh value="b1709c8d-ecd3-54a1-4f28-d55ac0840782"/>
359 <avatar_sit_generic.bvh value="245f3c54-f1c0-bf2e-811f-46d8eeb386e7"/>
360 <avatar_sit_ground.bvh value="1c7600d6-661f-b87b-efe2-d7421eb93c86"/>
361 <avatar_sit_ground_constrained.bvh value="1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"/>
362 <avatar_sit_to_stand.bvh value="a8dee56f-2eae-9e7a-05a2-6fb92b97e21e"/>
363 <avatar_sleep.bvh value="f2bed5f9-9d44-39af-b0cd-257b2a17fe40"/>
364 <avatar_smoke_idle.bvh value="d2f2ee58-8ad1-06c9-d8d3-3827ba31567a"/>
365 <avatar_smoke_inhale.bvh value="6802d553-49da-0778-9f85-1599a2266526"/>
366 <avatar_smoke_throw_down.bvh value="0a9fb970-8b44-9114-d3a9-bf69cfe804d6"/>
367 <avatar_snapshot.bvh value="eae8905b-271a-99e2-4c0e-31106afd100c"/>
368 <avatar_soft_land.bvh value="f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"/>
369 <avatar_stand.bvh value="2408fe9e-df1d-1d7d-f4ff-1384fa7b350f"/>
370 <avatar_stand_1.bvh value="15468e00-3400-bb66-cecc-646d7c14458e"/>
371 <avatar_stand_2.bvh value="370f3a20-6ca6-9971-848c-9a01bc42ae3c"/>
372 <avatar_stand_3.bvh value="42b46214-4b44-79ae-deb8-0df61424ff4b"/>
373 <avatar_stand_4.bvh value="f22fed8b-a5ed-2c93-64d5-bdd8b93c889f"/>
374 <avatar_standup.bvh value="3da1d753-028a-5446-24f3-9c9b856d9422"/>
375 <avatar_stretch.bvh value="80700431-74ec-a008-14f8-77575e73693f"/>
376 <avatar_stride.bvh value="1cb562b0-ba21-2202-efb3-30f82cdf9595"/>
377 <avatar_surf.bvh value="41426836-7437-7e89-025d-0aa4d10f1d69"/>
378 <avatar_sword_strike_r.bvh value="85428680-6bf9-3e64-b489-6f81087c24bd"/>
379 <avatar_talk.bvh value="5c682a95-6da4-a463-0bf6-0f5b7be129d1"/>
380 <avatar_throw_r.bvh value="aa134404-7dac-7aca-2cba-435f9db875ca"/>
381 <avatar_tryon_shirt.bvh value="83ff59fe-2346-f236-9009-4e3608af64c1"/>
382 <avatar_turn_180.bvh value="038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53"/>
383 <avatar_turnback_180.bvh value="6883a61a-b27b-5914-a61e-dda118a9ee2c"/>
384 <avatar_turnleft.bvh value="56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"/>
385 <avatar_turnright.bvh value="2d6daa51-3192-6794-8e2e-a15f8338ec30"/>
386 <avatar_type.bvh value="c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"/>
387 <avatar_walk.bvh value="6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"/>
388 <avatar_whisper.bvh value="7693f268-06c7-ea71-fa21-2b30d6533f8f"/>
389 <avatar_whistle.bvh value="b1ed7982-c68e-a982-7561-52a88a5298c0"/>
390 <avatar_wink_hollywood.bvh value="c0c4030f-c02b-49de-24ba-2331f43fe41c"/>
391 <avatar_yes_happy.bvh value="b8c8b2a3-9008-1771-3bfc-90924955ab2d"/>
392 <avatar_yes_head.bvh value="15dd911d-be82-2856-26db-27659b142875"/>
393 <avatar_yoga_float.bvh value="42ecd00b-9947-a97c-400a-bbc9174c7aeb"/>
394 <fringe.tga value="8ac54e9d-ec09-d804-60ab-47404a9b4a36"/>
395 <foot_shadow.tga value="14e8a47d-1055-0a68-5d55-eafd9ad3da5b"/>
396 <img_smoke_poof.tga value="c734da52-f2ba-f0ba-d59e-15ea49f3d5e9"/>
397 <img_shot.tga value="173b05c7-53a9-4cf8-ce6b-5eec21c5c63f"/>
398 <folder_arrow.tga value="09a324a8-acc1-d9cd-2cbd-7465d90d3a98"/>
399 <color_swatch_alpha.tga value="f13db22f-c55c-8bdf-7b1c-221e56fde253"/>
400 <script_error.tga value="e5a0ec29-f59e-d29e-2c59-ed66c187c26c"/>
401 <status_script_debug.tga value="7775b5cc-93a5-6efd-0d9b-4e079afac217"/>
402 <water_normal.tga value="822ded49-9a6c-f61c-cb89-6df54f42cdf4"/>
403 <icon_groupnotice.tga value="21579c81-a85e-f11c-2d80-33a4c007d88c"/>
404 <icon_groupnoticeinventory.tga value="8fcca699-08e7-3d58-2f05-86c9d52bbe82"/>
405 <tab_background_lightgrey.tga value="c769e547-c307-43ca-2b6a-51cad6d1c527"/>
406 <tab_background_purple.tga value="0ae8a2e9-aff4-249c-fc4a-0f41f89847dd"/>
407 <tab_background_darkpurple.tga value="38ff4f7e-3078-a749-8302-d6cc94b404c4"/>
408 <smicon_warn.tga value="f47c17a3-8bfb-3c9f-22b8-77923de7eed9"/>
409 <uv_test1.tga value="f43b75f5-9aa5-18ec-d5d9-e6d1b8442613"/>
410 <uv_test2.tga value="300ce95f-3d3f-7c1a-3a22-3fc48f873fb9"/>
411 <eye_button_active.tga value="2b42b375-f9b4-788e-46c7-7ef38762d0ba"/>
412 <eye_button_inactive.tga value="be1b7225-98b5-eb2a-2c86-ddaae3328a6e"/>
413 <account_id_blue.tga value="6ab9179a-7308-58db-6c9d-893d3b52bece"/>
414 <account_id_orange.tga value="fbe89371-1251-4e77-d2d8-8eeccffe3ca8"/>
415 <account_id_green.tga value="3bf64d5a-38d3-b752-cf52-3d9f8fca353a"/>
416 <status_push.tga value="07d1f523-e327-4d10-20d6-8bc22a6e8f56"/>
417 <ff_visible_online.tga value="d609a41f-34c0-7aae-b2c6-2fc3ab26d916"/>
418 <ff_visible_map.tga value="20b52706-c1ab-414a-9dea-1cb788ad5689"/>
419 <ff_edit_mine.tga value="1baee0b9-4b89-39eb-8815-866d82300ab5"/>
420 <ff_edit_theirs.tga value="32e981cd-4700-da5a-7fc7-d573ec3742f4"/>
421 <inv_item_script_dangerous.tga value="0b502db8-6fcd-c442-ecfe-483a0dce875e"/>
422 <ff_visible_map_button.tga value="c1079bef-5cf9-90f3-6dcd-48989851c252"/>
423 <ff_visible_online_button.tga value="36749b47-93d6-2c5e-7ebd-d38d30311163"/>
424 <ff_edit_theirs_button.tga value="ca229f65-d7e0-133e-1bc2-674abc33f3d5"/>
425 <ff_edit_mine_button.tga value="57f05b46-63d8-c3d5-66d6-8b915746b956"/>
426 <ff_online_status_button.tga value="3b1b6a53-9c8c-568a-22c5-2a8f3e5286f5"/>
427 <oi_hud_cen_0_0.tga value="3c650257-9caf-7cad-b26c-84c9eca560f1"/>
428 <oi_hud_intro.tga value="7611fb3d-9ff2-abd3-d98f-805c1c87e757"/>
429 <oi_hud_underwater.tga value="cde61aea-83c2-3001-d598-6b348f7a8e0b"/>
430 <oi_hud_got_passport.tga value="1271838d-d777-b811-7c4c-2a00308bd80a"/>
431 <oi_hud_texture_off_edge.tga value="852be205-b1ea-6356-58c8-8c5ee5a841a6"/>
432 <oi_hud_texture_on_edge.tga value="ab11e6ff-a732-be70-67df-c43131274562"/>
433 <oi_hud_flyingabovewater.tga value="c9d150d6-2739-5f8b-cce6-3cf98242920a"/>
434 <oi_hud_walkingabovewater.tga value="78284eeb-05f3-ff25-11a0-3cc9dbb30f0c"/>
435 <oi_hud_landmark.tga value="6cd9c221-9d42-a283-256b-09a113a87271"/>
436 <oi_hud_cus_5_3.tga value="7c12f4fb-f502-26d1-a2f3-cdb6aff61663"/>
437 <oi_hud_cus_5_2.tga value="c52c9c94-adc0-0f4e-6658-ed33d6ea8829"/>
438 <oi_hud_cus_5_1.tga value="9f6d5d11-6ca9-608c-e8a6-b77989350292"/>
439 <oi_hud_cus_5_0.tga value="2000cff1-119f-2023-66c0-ac5630d2f96e"/>
440 <oi_hud_cus_4_5.tga value="f302a935-ccd1-e2f5-3a38-e185cc262f3a"/>
441 <oi_hud_cus_4_3.tga value="af8d5b3c-b40f-cea5-b0b2-440fbd84a11a"/>
442 <oi_hud_cus_4_2.tga value="11b26901-8207-12bc-5224-10a12ac4c651"/>
443 <oi_hud_cus_4_1.tga value="41baadb7-1b94-907e-9443-54e92bba77cd"/>
444 <oi_hud_cus_4_0.tga value="9d627f8e-092c-5d32-6c12-ef76ab81cedc"/>
445 <oi_hud_cus_3_4.tga value="b196486e-d0d2-4fd7-529a-c84b4495fc74"/>
446 <oi_hud_cus_3_2.tga value="0b81c4bb-de33-e493-7bcb-e7221d97e5e7"/>
447 <oi_hud_cus_3_1.tga value="436dab74-25ae-8b60-c648-50663b7faa1d"/>
448 <oi_hud_cus_3_0.tga value="6c1594de-1e66-273c-a2ab-8f0ffa8b4633"/>
449 <oi_hud_cus_2_4.tga value="bb31fe48-8566-eec0-e96b-64025f832b63"/>
450 <oi_hud_cus_2_2.tga value="c946959a-26ae-eb66-efa0-20154057789d"/>
451 <oi_hud_cus_2_1.tga value="c946959a-26ae-eb66-efa0-20154057789d"/>
452 <oi_hud_cus_2_0.tga value="d7833106-b4a8-7666-bde1-64886de289f9"/>
453 <oi_hud_cus_1_0.tga value="811ded22-5940-940c-4821-6fbbfb6611d6"/>
454 <oi_hud_cus_1_1.tga value="eda8513b-a343-5109-1fd6-f1c7ad89b703"/>
455 <oi_hud_cus_1_2.tga value="7a4ce18c-e715-34d4-dfee-704c270a8ac8"/>
456 <oi_hud_cus_1_4.tga value="d3771c15-ac03-b762-b992-d9fd2fedf38a"/>
457 <oi_hud_com_4_4.tga value="d9e1e90d-3cc3-6269-128e-67f7a2b32d26"/>
458 <oi_hud_com_4_2.tga value="0f649a26-6fdb-c73b-ffac-e50fc311d5ce"/>
459 <oi_hud_com_4_1.tga value="ae5b1ce6-a2d2-22d2-f532-6280b3bc6adb"/>
460 <oi_hud_com_4_0.tga value="12cda3a0-58c7-dfa8-7f9b-380e5bb8baf9"/>
461 <oi_hud_com_3_4.tga value="ff326257-0530-356a-e0f8-be535044e540"/>
462 <oi_hud_com_3_2.tga value="66740ddb-1d56-89f9-f0c9-ae5eb7bb9537"/>
463 <oi_hud_com_3_1.tga value="55d662f4-6a28-6388-7c75-af1c9fd33055"/>
464 <oi_hud_com_3_0.tga value="de9d318f-b69e-82f9-0c61-43b868c5ca6b"/>
465 <oi_hud_com_2_4.tga value="01d47e68-400a-d0e1-afb7-d6806d1d477e"/>
466 <oi_hud_com_2_0.tga value="09c98850-27d4-6a12-abae-4af4bba23b6b"/>
467 <oi_hud_com_1_3.tga value="5c2049b9-f797-6608-ca71-758f3716aa90"/>
468 <oi_hud_com_1_1.tga value="1116ff68-cdc4-1cfc-e137-30f8426afeda"/>
469 <oi_hud_com_1_0.tga value="bd847d31-f5af-95f7-2b9c-af47d8ba53bd"/>
470 <oi_hud_nav_4_5.tga value="66194280-b087-db94-35d9-41e8f7518515"/>
471 <oi_hud_nav_4_4.tga value="180c4241-e309-4c05-13ee-9080ab69498d"/>
472 <oi_hud_nav_4_3.tga value="e98a6ba6-99c6-fa15-84b6-9afadea6c467"/>
473 <oi_hud_nav_4_2.tga value="2e19f352-1893-59a9-949b-4d2cfd3a8222"/>
474 <oi_hud_nav_4_1.tga value="13a1675b-fb5a-19b3-b5a3-74b0a6765f7d"/>
475 <oi_hud_nav_4_0.tga value="e7526e8d-b085-b26c-b0ae-2708ec231401"/>
476 <oi_hud_nav_3_5.tga value="5e67b0d0-29a2-6a08-c85e-b12d59e53d6e"/>
477 <oi_hud_nav_3_4.tga value="2ed8fbc2-5c4d-53c2-b289-88baffceab1a"/>
478 <oi_hud_nav_3_3.tga value="e0a72f1a-282e-1c1a-2cb7-6423feb41759"/>
479 <oi_hud_nav_3_2.tga value="4bcebb23-da5e-47d9-eac1-e4453f762c8c"/>
480 <oi_hud_nav_3_1.tga value="6ac87575-330e-3a2d-3b80-a34e7b277e50"/>
481 <oi_hud_nav_3_0.tga value="f1451e8e-7310-9152-47d5-5d037c28fef3"/>
482 <oi_hud_nav_2_6.tga value="c60b42ff-ee60-98e4-e603-ca2470141d4b"/>
483 <oi_hud_nav_2_5.tga value="a02b5a1a-bbdb-5556-ae5b-a2e68494755a"/>
484 <oi_hud_nav_2_4.tga value="625535ab-8abf-b3e7-48fb-43f728b77c79"/>
485 <oi_hud_nav_2_3.tga value="00a609c3-5750-3b5a-3ce3-458bdf632203"/>
486 <oi_hud_nav_2_2.tga value="94903387-d37f-092c-e4d2-c190f68577b8"/>
487 <oi_hud_nav_2_1.tga value="ee0cd82c-6ce8-8e73-307b-6d0dc77b19e8"/>
488 <oi_hud_nav_2_0.tga value="3e10b379-ed2c-7424-1fe7-bef3558c7536"/>
489 <oi_hud_nav_1_4.tga value="bf8d0be8-2012-1664-3ea5-e69a71c206e9"/>
490 <oi_hud_nav_1_2.tga value="72100f87-18a7-fc4a-4793-de281e8b02cc"/>
491 <oi_hud_nav_1_1.tga value="b048faf3-60ce-c3a2-d034-36613449d377"/>
492 <oi_hud_nav_1_0.tga value="0ad45106-3b26-6448-0b90-feae8bd46c38"/>
493 <oi_hud_mov_4_5.tga value="7c4a45c2-37dd-312c-c6ab-20896dd0a5a6"/>
494 <oi_hud_mov_4_3.tga value="8a88da1c-3735-c71e-d48a-016df0798de4"/>
495 <oi_hud_mov_4_2.tga value="f55ae4d3-7d6a-e6ac-4cf7-03014ce14390"/>
496 <oi_hud_mov_4_1.tga value="1cc3fcf1-35c0-e222-27d2-6905cf5c4cee"/>
497 <oi_hud_mov_4_0.tga value="1ae592dc-46f4-616e-b7c6-0dff3e6f40e5"/>
498 <oi_hud_mov_3_4.tga value="831b39be-99fc-45bd-ba85-708f9dc93bfd"/>
499 <oi_hud_mov_3_2.tga value="9f7e7373-92a9-d66a-ad5a-afb55ca6ac1f"/>
500 <oi_hud_mov_3_1.tga value="ab37ed0d-7e66-1f77-3acf-b0fe4b74dbe8"/>
501 <oi_hud_mov_3_0.tga value="f5ff1f08-4c92-8606-1854-cc5b9d3e445c"/>
502 <oi_hud_mov_1_2.tga value="1e3abeed-e893-c44e-1f9d-5ecc76d21e5d"/>
503 <oi_hud_mov_1_0.tga value="e300fc95-aa94-8e31-c501-ce903cac8b7c"/>
504</settings> \ No newline at end of file