diff options
author | McCabe Maxsted | 2011-09-08 17:15:52 -0700 |
---|---|---|
committer | McCabe Maxsted | 2011-09-08 17:15:52 -0700 |
commit | 757a76a94667bacfac566cae7b2418bc5d5fe767 (patch) | |
tree | 73f28c32fe74a82569e0933abfffbe26264ec66d /linden/indra/newview/installers | |
parent | Fixed cmake merge error when adding SSE2 target to copy win libs (diff) | |
download | meta-impy-757a76a94667bacfac566cae7b2418bc5d5fe767.zip meta-impy-757a76a94667bacfac566cae7b2418bc5d5fe767.tar.gz meta-impy-757a76a94667bacfac566cae7b2418bc5d5fe767.tar.bz2 meta-impy-757a76a94667bacfac566cae7b2418bc5d5fe767.tar.xz |
Rebranded the Windows isntaller template back to Imp
Diffstat (limited to 'linden/indra/newview/installers')
-rw-r--r-- | linden/indra/newview/installers/windows/imprudence_installer_template.iss (renamed from linden/indra/newview/installers/windows/inworldz_installer_template.iss) | 86 |
1 files changed, 49 insertions, 37 deletions
diff --git a/linden/indra/newview/installers/windows/inworldz_installer_template.iss b/linden/indra/newview/installers/windows/imprudence_installer_template.iss index 655ebc5..0605fba 100644 --- a/linden/indra/newview/installers/windows/inworldz_installer_template.iss +++ b/linden/indra/newview/installers/windows/imprudence_installer_template.iss | |||
@@ -1,16 +1,18 @@ | |||
1 | ; InWorldz inno setup installer template by McCabe Maxsted | 1 | ; Imprudence inno setup installer template by McCabe Maxsted |
2 | 2 | ||
3 | [Setup] | 3 | [Setup] |
4 | ; NOTE: The value of AppId uniquely identifies this application. | 4 | ; NOTE: The value of AppId uniquely identifies this application. |
5 | ; Do not use the same AppId value in installers for other applications. | 5 | ; Do not use the same AppId value in installers for other applications. |
6 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) | 6 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) |
7 | ; Imp Stable ID: D7736EE8-AFCE-4735-BBE3-652CDFBBFCA8 | ||
8 | ; Imp Experimental ID: 1B3E68BC-13EB-4277-9439-CB5FF9259460 | ||
7 | 9 | ||
8 | ; These will change | 10 | ; These will change |
9 | AppId={{DC6CCE02-BC61-43B1-B4CA-292C6BCCCB34} | 11 | AppId={{D7736EE8-AFCE-4735-BBE3-652CDFBBFCA8} |
10 | AppName=%%APPNAME%% | 12 | AppName=%%APPNAME%% |
11 | AppVerName=%%APPVERNAME%% | 13 | AppVerName=%%APPVERNAME%% |
12 | DefaultDirName={pf}\InWorldz | 14 | DefaultDirName={pf}\Imprudence |
13 | DefaultGroupName=InWorldz | 15 | DefaultGroupName=Imprudence Viewer |
14 | VersionInfoProductName=%%APPNAME%% | 16 | VersionInfoProductName=%%APPNAME%% |
15 | OutputBaseFilename=%%INSTALLERFILENAME%% | 17 | OutputBaseFilename=%%INSTALLERFILENAME%% |
16 | VersionInfoVersion=%%VERSION%% | 18 | VersionInfoVersion=%%VERSION%% |
@@ -20,21 +22,21 @@ AppVersion=%%VERSION%% | |||
20 | VersionInfoCopyright=2011 | 22 | VersionInfoCopyright=2011 |
21 | 23 | ||
22 | ; These won't change | 24 | ; These won't change |
23 | VersionInfoCompany=InWorldz, LLC | 25 | VersionInfoCompany=Imprudence |
24 | AppPublisher=InWorldz, LLC | 26 | AppPublisher=The Imprudence Project |
25 | AppPublisherURL=http://inworldz.com | 27 | AppPublisherURL=http://kokuaviewer.org |
26 | AppSupportURL=http://inworldz.com | 28 | AppSupportURL=http://kokuaviewer.org |
27 | AllowNoIcons=true | 29 | AllowNoIcons=true |
28 | InfoAfterFile=..\..\..\..\..\..\README.txt | 30 | InfoAfterFile=..\..\..\..\..\..\README.txt |
29 | OutputDir=. | 31 | OutputDir=. |
30 | SetupIconFile=..\..\..\..\newview\installers\windows\install_icon.ico | 32 | SetupIconFile=..\..\..\..\newview\installers\windows\imp_icon.ico |
31 | Compression=lzma2/ultra64 | 33 | Compression=lzma2/ultra64 |
32 | InternalCompressLevel=ultra64 | 34 | InternalCompressLevel=ultra64 |
33 | SolidCompression=true | 35 | SolidCompression=true |
34 | PrivilegesRequired=poweruser | 36 | PrivilegesRequired=poweruser |
35 | AllowRootDirectory=true | 37 | AllowRootDirectory=true |
36 | WizardImageFile=..\..\..\..\newview\installers\windows\installer_icon_left.bmp | 38 | WizardImageFile=..\..\..\..\newview\installers\windows\imprudence_installer_icon_left.bmp |
37 | WizardSmallImageFile=..\..\..\..\newview\installers\windows\installer_icon_right.bmp | 39 | WizardSmallImageFile=..\..\..\..\newview\installers\windows\imprudence_installer_icon_right.bmp |
38 | SetupLogging=true | 40 | SetupLogging=true |
39 | RestartIfNeededByRun=false | 41 | RestartIfNeededByRun=false |
40 | AlwaysRestart=false | 42 | AlwaysRestart=false |
@@ -50,7 +52,7 @@ Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription | |||
50 | 52 | ||
51 | ; NOTE VS2005 is currently the only version supported anywhere in the packaging system, so we can do this here | 53 | ; NOTE VS2005 is currently the only version supported anywhere in the packaging system, so we can do this here |
52 | [Files] | 54 | [Files] |
53 | Source: %%PACKAGEFILES%%\inworldz.exe; DestDir: {app}; Flags: ignoreversion | 55 | Source: %%PACKAGEFILES%%\imprudence.exe; DestDir: {app}; Flags: ignoreversion |
54 | Source: %%PACKAGEFILES%%\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs | 56 | Source: %%PACKAGEFILES%%\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs |
55 | Source: %%PACKAGEFILES%%\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs | 57 | Source: %%PACKAGEFILES%%\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs |
56 | Source: %%PACKAGEFILES%%\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs | 58 | Source: %%PACKAGEFILES%%\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs |
@@ -63,10 +65,11 @@ Source: %%PACKAGEFILES%%\libapr-1.dll; DestDir: {app}; Flags: ignoreversion | |||
63 | Source: %%PACKAGEFILES%%\libapriconv-1.dll; DestDir: {app}; Flags: ignoreversion | 65 | Source: %%PACKAGEFILES%%\libapriconv-1.dll; DestDir: {app}; Flags: ignoreversion |
64 | Source: %%PACKAGEFILES%%\libaprutil-1.dll; DestDir: {app}; Flags: ignoreversion | 66 | Source: %%PACKAGEFILES%%\libaprutil-1.dll; DestDir: {app}; Flags: ignoreversion |
65 | Source: %%PACKAGEFILES%%\llcommon.dll; DestDir: {app}; Flags: ignoreversion | 67 | Source: %%PACKAGEFILES%%\llcommon.dll; DestDir: {app}; Flags: ignoreversion |
68 | Source: %%PACKAGEFILES%%\libhunspell.dll; DestDir: {app}; Flags: ignoreversion | ||
66 | Source: %%PACKAGEFILES%%\featuretable.txt; DestDir: {app}; Flags: ignoreversion | 69 | Source: %%PACKAGEFILES%%\featuretable.txt; DestDir: {app}; Flags: ignoreversion |
67 | Source: %%PACKAGEFILES%%\gpu_table.txt; DestDir: {app}; Flags: ignoreversion | 70 | Source: %%PACKAGEFILES%%\gpu_table.txt; DestDir: {app}; Flags: ignoreversion |
68 | Source: %%PACKAGEFILES%%\kdu_v64R.dll; DestDir: {app}; Flags: ignoreversion | 71 | Source: %%PACKAGEFILES%%\imprudence.url; DestDir: {app}; Flags: ignoreversion |
69 | Source: %%PACKAGEFILES%%\kdu_v64R.dll.config; DestDir: {app}; Flags: ignoreversion | 72 | Source: %%PACKAGEFILES%%\llkdu.dll.2.config; DestDir: {app}; Flags: ignoreversion |
70 | Source: %%PACKAGEFILES%%\openal32.dll; DestDir: {app}; Flags: ignoreversion | 73 | Source: %%PACKAGEFILES%%\openal32.dll; DestDir: {app}; Flags: ignoreversion |
71 | Source: %%PACKAGEFILES%%\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion | 74 | Source: %%PACKAGEFILES%%\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion |
72 | Source: %%PACKAGEFILES%%\README.txt; DestDir: {app}; Flags: ignoreversion | 75 | Source: %%PACKAGEFILES%%\README.txt; DestDir: {app}; Flags: ignoreversion |
@@ -134,10 +137,16 @@ Source: %%PACKAGEFILES%%\SDL.dll; DestDir: {app}; Flags: ignoreversion | |||
134 | Source: %%PACKAGEFILES%%\xvidcore.dll; DestDir: {app}; Flags: ignoreversion | 137 | Source: %%PACKAGEFILES%%\xvidcore.dll; DestDir: {app}; Flags: ignoreversion |
135 | Source: %%PACKAGEFILES%%\z.dll; DestDir: {app}; Flags: ignoreversion | 138 | Source: %%PACKAGEFILES%%\z.dll; DestDir: {app}; Flags: ignoreversion |
136 | 139 | ||
140 | ; Voice files | ||
141 | Source: %%PACKAGEFILES%%\ortp.dll; DestDir: {app}; Flags: ignoreversion | ||
142 | Source: %%PACKAGEFILES%%\SLVoice.exe; DestDir: {app}; Flags: ignoreversion | ||
143 | Source: %%PACKAGEFILES%%\vivoxsdk.dll; DestDir: {app}; Flags: ignoreversion | ||
144 | Source: %%PACKAGEFILES%%\wrap_oal.dll; DestDir: {app}; Flags: ignoreversion | ||
145 | |||
137 | ; VC++ 2005 SP1 x86, VC++ 2008 SP1 x86, and VC++ 2010 SP1 x86 redist | 146 | ; VC++ 2005 SP1 x86, VC++ 2008 SP1 x86, and VC++ 2010 SP1 x86 redist |
138 | Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2005_SP1_MFC_SEC.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2005_SP1_MFC_SEC.exe | 147 | Source: ..\windows\vcredist_x86_VS2005_SP1_MFC_SEC.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2005_SP1_MFC_SEC.exe |
139 | Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2008_SP1_ATL_SEC.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2008_SP1_ATL_SEC.exe | 148 | ;Source: ..\windows\vcredist_x86_VS2008_SP1_ATL_SEC.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2008_SP1_ATL_SEC.exe |
140 | Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2010_SP1.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2010_SP1.exe | 149 | Source: ..\windows\vcredist_x86_VS2010_SP1.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2010_SP1.exe |
141 | 150 | ||
142 | ; Old files we don't use anymore: | 151 | ; Old files we don't use anymore: |
143 | ; Source: %%PACKAGEFILES%%\dronesettings.xml; DestDir: {app}; Flags: ignoreversion | 152 | ; Source: %%PACKAGEFILES%%\dronesettings.xml; DestDir: {app}; Flags: ignoreversion |
@@ -152,20 +161,23 @@ Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2010_SP1.exe; Dest | |||
152 | ;Source: %%PACKAGEFILES%%\msvcr71.dll; DestDir: {app}; Flags: ignoreversion; MinVersion: 0,6.01; Tasks: ; Languages: | 161 | ;Source: %%PACKAGEFILES%%\msvcr71.dll; DestDir: {app}; Flags: ignoreversion; MinVersion: 0,6.01; Tasks: ; Languages: |
153 | 162 | ||
154 | [Registry] | 163 | [Registry] |
155 | Root: HKCR; Subkey: inworldz; ValueType: string; Flags: uninsdeletekey deletekey; ValueName: (default); ValueData: URL:InWorldz | 164 | Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: (default); ValueData: URL:Second Life |
156 | Root: HKCR; Subkey: inworldz; ValueType: string; Flags: uninsdeletekey deletekey; ValueName: URL Protocol | 165 | Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: URL Protocol |
157 | Root: HKCR; Subkey: inworldz\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; ValueData: {app}\inworldz.exe | 166 | Root: HKCR; Subkey: secondlife\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; Tasks: slurlassociate; ValueData: {app}\imprudence.exe |
158 | Root: HKCR; Subkey: inworldz\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; ValueData: "{app}\inworldz.exe -url ""%1"""; Languages: | 167 | Root: HKCR; Subkey: secondlife\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueData: "{app}\imprudence.exe --settings settings_imprudence.xml -url ""%1"""; Languages: |
159 | ; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib | 168 | ; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib |
160 | ; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app} | 169 | ; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app} |
161 | 170 | ||
162 | [Icons] | 171 | [Icons] |
163 | Name: {group}\{cm:UninstallProgram,InWorldz}; Filename: {uninstallexe} | 172 | Name: {group}\{cm:UninstallProgram,Imprudence}; Filename: {uninstallexe} |
164 | Name: {commondesktop}\InWorldz; Filename: {app}\inworldz.exe; Tasks: desktopicon; WorkingDir: {app}; IconIndex: 0 | 173 | Name: {commondesktop}\Imprudence; Filename: {app}\imprudence.exe; Tasks: desktopicon; Parameters: --settings settings_imprudence.xml; WorkingDir: {app}; IconIndex: 0 |
165 | Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\InWorldz; Filename: {app}\inworldz.exe; Tasks: quicklaunchicon; WorkingDir: {app} | 174 | Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Imprudence; Filename: {app}\imprudence.exe; Tasks: quicklaunchicon; Parameters: --settings settings_imprudence.xml; WorkingDir: {app} |
166 | Name: {group}\InWorldz; Filename: {app}\inworldz.exe; WorkingDir: {app}; Comment: inworldz; IconIndex: 0; | 175 | Name: {group}\Imprudence; Filename: {app}\imprudence.exe; WorkingDir: {app}; Comment: imprudence; IconIndex: 0; Parameters: --settings settings_imprudence.xml |
167 | 176 | ||
168 | [Run] | 177 | [Run] |
178 | Filename: {app}\imprudence.exe; WorkingDir: {app}; Flags: nowait postinstall | ||
179 | Filename: {app}\imprudence.url; WorkingDir: {app}; Flags: nowait postinstall shellexec; Description: See what makes Imprudence different | ||
180 | |||
169 | ; Install redistributables. | 181 | ; Install redistributables. |
170 | ; | 182 | ; |
171 | ; !!!!BEWARE!!!! | 183 | ; !!!!BEWARE!!!! |
@@ -174,19 +186,19 @@ Name: {group}\InWorldz; Filename: {app}\inworldz.exe; WorkingDir: {app}; Comment | |||
174 | 186 | ||
175 | ; Always use /q for VS2005 rather than something quieter such as Parameters: "/q:a c:""msiexec /i vcredist.msi /qn"" ". The redist will fail sometimes if you do otherwise. | 187 | ; Always use /q for VS2005 rather than something quieter such as Parameters: "/q:a c:""msiexec /i vcredist.msi /qn"" ". The redist will fail sometimes if you do otherwise. |
176 | Filename: {app}\redist\vcredist_x86_VS2005_SP1_MFC_SEC.exe; Parameters: "/q"; Check: Needs2005Redist; Flags: runhidden | 188 | Filename: {app}\redist\vcredist_x86_VS2005_SP1_MFC_SEC.exe; Parameters: "/q"; Check: Needs2005Redist; Flags: runhidden |
177 | Filename: {app}\redist\vcredist_x86_VS2008_SP1_ATL_SEC.exe; Parameters: "/q"; Check: Needs2008Redist; Flags: runhidden | 189 | ;Filename: {app}\redist\vcredist_x86_VS2008_SP1_ATL_SEC.exe; Parameters: "/q"; Check: Needs2008Redist; Flags: runhidden |
178 | Filename: {app}\redist\vcredist_x86_VS2010_SP1.exe; Parameters: "/q /norestart"; Check: Needs2010Redist; Flags: runhidden | 190 | Filename: {app}\redist\vcredist_x86_VS2010_SP1.exe; Parameters: "/q /norestart"; Check: Needs2010Redist; Flags: runhidden |
179 | Filename: {app}\inworldz.exe; WorkingDir: {app}; Flags: nowait postinstall | ||
180 | 191 | ||
181 | [UninstallDelete] | 192 | [UninstallDelete] |
182 | Name: {userappdata}\InWorldz\user_settings\password.dat; Type: files; Languages: | 193 | Name: {userappdata}\Imprudence\user_settings\password.dat; Type: files; Languages: |
183 | Name: {userappdata}\InWorldz\user_settings\settings.xml; Type: files; Languages: | 194 | Name: {userappdata}\Imprudence\user_settings\settings.xml; Type: files; Languages: |
184 | ; 1.1 and lower cache location: | 195 | Name: {userappdata}\Imprudence\user_settings\settings_imprudence.xml; Type: files; Languages: |
185 | Name: {userappdata}\InWorldz\cache; Type: filesandordirs | 196 | ; 1.2 and lower cache location: |
186 | ; 1.2 and higher cache location: | 197 | Name: {userappdata}\Imprudence\cache; Type: filesandordirs |
187 | Name: {localappdata}\InWorldz\cache; Type: filesandordirs | 198 | ; 1.3 and higher cache location: |
188 | Name: {userappdata}\InWorldz\logs; Type: filesandordirs | 199 | Name: {localappdata}\Imprudence\cache; Type: filesandordirs |
189 | Name: {userappdata}\InWorldz\browser_profile; Type: filesandordirs | 200 | Name: {userappdata}\Imprudence\logs; Type: filesandordirs |
201 | Name: {userappdata}\Imprudence\browser_profile; Type: filesandordirs | ||
190 | Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs | 202 | Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs |
191 | Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs | 203 | Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs |
192 | 204 | ||
@@ -214,7 +226,6 @@ Name: {app}\freebl3.dll; Type: files; Tasks: ; Languages: | |||
214 | Name: {app}\glew32.dll; Type: files; Tasks: ; Languages: | 226 | Name: {app}\glew32.dll; Type: files; Tasks: ; Languages: |
215 | Name: {app}\iconv.dll; Type: files; Tasks: ; Languages: | 227 | Name: {app}\iconv.dll; Type: files; Tasks: ; Languages: |
216 | Name: {app}\intl.dll; Type: files; Tasks: ; Languages: | 228 | Name: {app}\intl.dll; Type: files; Tasks: ; Languages: |
217 | Name: {app}\InWorldzViewer.exe; Type: files; Tasks: ; Languages: | ||
218 | Name: {app}\js3250.dll; Type: files; Tasks: ; Languages: | 229 | Name: {app}\js3250.dll; Type: files; Tasks: ; Languages: |
219 | Name: {app}\libcairo-2.dll; Type: files; Tasks: ; Languages: | 230 | Name: {app}\libcairo-2.dll; Type: files; Tasks: ; Languages: |
220 | Name: {app}\libfaad-2.dll; Type: files; Tasks: ; Languages: | 231 | Name: {app}\libfaad-2.dll; Type: files; Tasks: ; Languages: |
@@ -265,6 +276,7 @@ Name: {app}\nss3.dll; Type: files; Tasks: ; Languages: | |||
265 | Name: {app}\nssckbi.dll; Type: files; Tasks: ; Languages: | 276 | Name: {app}\nssckbi.dll; Type: files; Tasks: ; Languages: |
266 | Name: {app}\plc4.dll; Type: files; Tasks: ; Languages: | 277 | Name: {app}\plc4.dll; Type: files; Tasks: ; Languages: |
267 | Name: {app}\plds4.dll; Type: files; Tasks: ; Languages: | 278 | Name: {app}\plds4.dll; Type: files; Tasks: ; Languages: |
279 | Name: {app}\RELEASE_NOTES.txt; Type: files; Tasks: ; Languages: | ||
268 | Name: {app}\smime3.dll; Type: files; Tasks: ; Languages: | 280 | Name: {app}\smime3.dll; Type: files; Tasks: ; Languages: |
269 | Name: {app}\softokn3.dll; Type: files; Tasks: ; Languages: | 281 | Name: {app}\softokn3.dll; Type: files; Tasks: ; Languages: |
270 | Name: {app}\ssl3.dll; Type: files; Tasks: ; Languages: | 282 | Name: {app}\ssl3.dll; Type: files; Tasks: ; Languages: |
@@ -279,7 +291,7 @@ Name: {app}\Microsoft.VC80.CRT.manifest; Type: files; Tasks: ; Languages: | |||
279 | Name: {app}\msvcp80.dll; Type: files; Tasks: ; Languages: | 291 | Name: {app}\msvcp80.dll; Type: files; Tasks: ; Languages: |
280 | Name: {app}\msvcr80.dll; Type: files; Tasks: ; Languages: | 292 | Name: {app}\msvcr80.dll; Type: files; Tasks: ; Languages: |
281 | Name: {app}\msvcr71.dll; Type: files; Tasks: ; Languages: | 293 | Name: {app}\msvcr71.dll; Type: files; Tasks: ; Languages: |
282 | Name: {app}\inworldz.exe.config; Type: files; Tasks: ; Languages: | 294 | Name: {app}\imprudence.exe.config; Type: files; Tasks: ; Languages: |
283 | 295 | ||
284 | 296 | ||
285 | [Code] | 297 | [Code] |