rF2 Log Analyzer ver. 2.058.3
Made by Nibo. You can contact me at email@example.com
You can support me by donating on my Patreon page. Special thanks to wrxxy for support.
This application is free to use. But you can not sell it.
THIS APPLICATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Added track positions widget to LiveTiming.
- Fixed LiveTiming error with non-ascii symbols. But they will not be displayed correctly.
Added LiveTiming suport for rFactor1 and Automobilista. You need to use modified version of rFactorSharedMemoryMap plugin. Download it here. Put
rFactor or Automobilista\Pluginsdirectory. Remove
rFactorSharedMemoryMap.dllif you had it there. rF1 mode limitation - human players will have AI status when standing in pits, no vehicle names, no tire compounds info.
Added optional support for global memory reading for LiveTiming with rFactor2. This is only needed in case when multiple rF2 servers are started from different windows user accounts and LiveTiming is not working.
read_global_memoryvalue to 1 in
rF2 Log Analyzer ver. 2.058.2\web2py\applications\r2la\live_timing_settings.json.
DedicatedServerMapGloballyto 1 in all your your
You need to start
r2la_live_timing.batfrom admin account or from non-admin account by pressing SHIFT+RMB and selecting "Run as different user" and entering windows admin account name and password.
You need to start
rF2 serversfrom admin account or from non-admin accounts by pressing SHIFT+RMB and selecting "Run as different user" and entering windows admin account name and password.
- Fixed LiveTiming Practice/Warmup time/laps values and Warmup standings table.
- LiveTiming support for multiple rFactor2 server processes.
- Fixed weather numbers output in LiveTiming.
Added LiveTiming. For server to output data - you need to download rF2 Shared Memory Tools for Developers, extract
rFactor 2\Bin64\Pluginsdirectory, start rF2, go into Options/Plugins and turn ON
rFactor2SharedMemoryMapPlugin64. For LiveTiming to work you need to start r2la on server machine by
r2la_live_timing.batfile. For LiveTiming to work properly always start
r2la_live_timing.batbefore you start rF2 session.
Clients don`t need to do anything new, just go to server`s r2la Live page. LiveTiming also works if you use rF2 offline, just install Shared Memory plugin and start r2la by
Special thanks to The Iron Wolf for Shared Memory plugin and to k3nny for helping me access shared memory data in Python.
- Added an option to show Team Name instead of Car Name in Records table.
- Added Ballast column to "Session results" table.
- Added number of laps for driver-track to Records page. Only timed laps will be counted.
- Removed Hotlaps and Offline Challenges. Becasue I need to stop using external server database. S397 introducing similar official competitions, please participate there. r2la DEDI competitions remain untouched.
Added possibility for your custom banner or logo to be displayed on every page below navbar. Go to Options Page to turn it on. Put your image (jpg, jpeg, gif or png) into
applications\r2la\static\images\custom_site_bannerfolder, then turn "Show custom banner" ON (+press Submit). Widths more then 1130px will be resized to fit. Less then 1130px will be centered. Banner will act like a hyperlink if an optional Banner Link address is provided. If you need to change your Banner, put new file in folder (remove old one), then turn "Show custom banner" OFF (+press Submit), then turn it ON again (+press Submit). Lower banner heights are recommended to not take much space, for better page usability.
- Added Batch File Editor for league admins. Select some log file then press Utils -> Batch File Editor.
Added internationalization for top menu, championship menu and some championship tables strings. Language selector is at the Options page. Language files are in web2py\applications\r2la\languagesdirectory. Only possible r2la strings for translation are in the languages\default.py file, at the end of the file. Insert r2la dictionary part from default.py to the end of your language file and substitute words after ":" to translations. For example,
"Results viewer": "Resultats sessions",for French (fr.py file).
- Fixed calculation of worst results for class championship tables.
- Added tooltip with full tire compound name for Race Results tab.
- Added missing autorefresh call to "Results" page.
- Added option to include race reports in static html on "Export championship standings".
- Added "Ignore worst results for team tables" championship option. If you need to turn off skipping worst results in team tables. "On" by default.
- Fixed an error when using team championship and "Use class pts for overall team standings" option.
- Aggregate championship stats are now exportable.
- Added color highlighting to best results in Aggregate championship stats.
- Compare Logs page now is not accessable if "Hide Results Viewer" option is On.
- Fixed an error when using "Use overall pts for class standings".
- Added "Notes" tab to championship page. Add notes with HTML/Markdown editor. Notes can be set as default championship page.
- Added Nola track to Hotlaps.
- Added assignment of country flags to track names on Records page. Click on Flag near track name at the Records page to set or change it. Most default tracks will have flags already assigned by r2la. If track has country flag assigned, this flag will be automatically assigned to championship race if race name will be equal to track name or when you assign race result with this track to this race. Your track-country assignments will be transferable with r2la_settings file between r2la versions.
- Added "Use overall pts for class standings" championship option.
- Added "Show driver position in driver standings" championship option.
- Added an option to select default page for championship: Last race or Driver standings.
- Added "Hide Results viewer for non-admins" option.
- Fixed country flags in exported championship standings.
- Added championship option to hide driver vehicle/team name in Driver Standings table.
- Added results editor. You can change driver name, position, finish time/status, laps completed, disqualify driver, add time penalty. See "Editing results" on r2la Help page for more info.
- Added notifications on number of new, removed or reloaded files after "refresh" to main page
- Fixed error in class standings worst result calculation
- Fixed error on html export if race has no Pole time
- Fixes for some bugs when working with multiple directories
- Fixes for track records reloading on xml removal
- Fix for small names if name has trailing space in it
- Major code refactoring. Updated to latest versions of web2py and UIkit.
- r2la now has only one distribution archive. Users can select non-DEDI or DEDI modes at the first start.
- Each session report tab is now loading on-click. Faster load times and less traffic if r2la is hosted.
- If any previously imported xml file changes size or timestamp, it will be automatically reloaded on "refresh". Useful if you need to change some names or typos in xml logs.
- Points system calculations improved. You can click on points in championship tables and will see detailed explanation for every driver/race cell. Searching for worst results now ignores "manual override points". Several bugs in points calculations fixed.
- Static html export now renders the same pages as usual r2la.
- Added Hotlaps for Nissan GT500. Fixed Longford track name for Hotlaps.
- Added "Points for finish on the lead lap" to Points System
- Added "fake" PTS to TOP10 column for all time stats tables (10-9-8-7-6-5-4-3-2-1 system). This allows for better driver ranking.
- Fixed error when championship race report page didn`t show up if this race has "No qualification" flag ON
- Fixed some errors if driver moves between classes in one championship
- Many small fixes and improvements.
- Added ability to select user defined set of championships to view aggregate stats. Use "Custom stats" link on Championships page. Note: For DEDI version stats tables are cached for 1 minute, so if championship results will change during 1 minute, stat tables might not update until 1 minute will pass.
- Added percentage for started races to driver stats tables
- Added Hotlaps for Endurance Series P2 and GTE classes, Caterham 7 Classic 1.4K, USF2000
- Added "Show all vehicle contacts" button to Incidents/Chat tab. It will download and show all incidents between vehicles.
- Old Hotlaps for EnduRacers Flat6 removed and will only be accepted from dates after release of Flat6 v2.0 (6 october 2016).
- Fixed ISI Indycar Hotlaps
- Added more info to "Race History" table (per lap positions, gaps to leader, front and back positions). Press "Show more data" button to see this info.
- Matsusaka added to Hotlaps
- Times from Palm Beach v2.02 will now be uploaded to Hotlaps (2.02 update changed track name string)
- Added support for session names "Practice 2/3/4" and "Race 2/3" (Race will be displayed as "Race" in r2la, without 2 or 3)
Moved tire compound color-coding to css (file web2py\applications\r2la\static\css\app.css).
Default colors will stay based on compound number, but can be changed or overriden based on name with "compound-Compound_Name" class name selectors.
Class names for tire badges will be autimatically added in format "compound-Compound_Name". Default coding for ISI F1 tire compounds added based on 2016 season. You can change or add your own tire compound badge colors at the end of app.css file. If tire compound name contains white-spaces, you should replace spaces with underscore "_". For example, to select Super Soft tire badge, css class selector must be ".compound-Super_Soft"
- Fixed error when using "Remove logs without lap times" and "Remove logs without drivers" options on refresh.
- Reason for penalty now displayed (introduced in rF2 Build 1080)
- Fixed error with saving r2la_settings.json with non ASCII characters in user defined team or class names
- Fixed error when creating DEDI Hotlap competitions
- Hotlaps added for Dissenter 1974
- Introduced per race points multiplier. Useful for setting double, triple or other modified points races. Press "Edit Race" button to edit points multiplier.
- "Edit Race" button now takes directly to Edit Race page without pop-up, to get rid of unnecessary click.
- Renamed xml files now can be picked up when searching for Qualy logs for Race log
- Error logs now have multiple select checkboxes
- Added missing background save to r2la_settings on race options change
- Fixed error when only one .xml file is in /Results directory
- Fixed error with non ASCII characters when importing player name and nick from player.json
- Fixed error if TeamName tag is empty
- Hotlaps added for Renault Megane Trophy
- Added dropdown to "Remove logs with no time set" button with options to remove all Race, Qualy, Warmup or Practice sessions
- Hotlaps added for Formula ISI 2012 and Flat6 Series
- r2la now supports multiple extra paths to read xml files from. Useful if you have multiple rFactor2 installs. Go to the "Options" page to add/remove extra paths.
- Added miles near km at track records page and compare logs page
- Sessions that belong to one weekend (same timestamp in xml RaceResults block) now marked. Top (parent) session is marked with "+", its child sessions are marked with "-" and have indent in "session type" column.
- Added checkbox to select all logs for this weekend (when using "select multiple")
- Optimized selection of multiple logs
- Added "Use class pts for overall team standings" option for championships. Useful if you have same teams in different classes and want combined team standings.
- Added "Show AI records" option to non-DEDI version. If turned "ON", AI record times will be visible at records page.
- Added compare view to DEDI version, which allows to open single log results in a separate page. Links to logs added to Records page and to "Session results" title in Results Viewer.
- Attempted fix for possible errors if driver list between Q1-Q3 is not consistent
- Fixed error when trying to compare several logs with 0 user laps in them
- Hotlaps added for Renault Clio 197, Chevrolet Camaro GT3 2013 and SCES LMP1 Acura ARX
- Since build 1.014 rF2 includes tire wear in log files. Tire wear info added to reports.
- Fixed wrong fuel consumption calculation in Race report if there were pit-stops with refueling.
- Added export of track records to records.csv file. Export button is at the Options page.
- Added options to automatically remove logs without drivers and/or without lap times on refresh, so that they never show in selector. Off by default. Go to the options page to turn them on.
- Session penalties added to Incidents/Chat tab.
- Incidents/Chat tab added to non-race session report.
- Q1, Q2, Q3 lap times are now shown in Qualification results table in race report.
- Fixed lap time selection for Hotlaps.
- Workaround for false MostLapsCompleted 0 value found in server xml in some cases.
- Non-race session results table now shows overall number of laps in this session for driver (was number of the fastest lap before).
- Championships now have "start date". It is only used for ordering championships list at "Championship manager" page, if you need.
- Small images for Dedi Hotlap competitions now will be centered.
- Hotlaps added for Stock Cars and Nissan GT-R GT1. Bathurst added to GT cars Hotlaps.
- Added an option to Dedi Hotlap Competitions to take lap times from current server logs automatically on refresh. Specific server name can be defined. Also added an option to accept only laps from this server logs (for client`s r2la`s such competitions will be invisible).
- Added "helpers" for track name and car identifiers to DEDI Competition Create/Edit form. They are not mandatory to use, only if you want.
- Server logs are now marked with * in log selector
- Fixed error when trying to clean DEDI Hotlap competitions results
- Fixed error in color coding of lap times in "Race laps per driver" for current rF2 user
- Fixed removing all logs for selected mod in Track Records
- Fixed error with displaying some Race reports that have drivers in Qual log, but not Race log
- Hotlaps added for AMGT3 and ISI Chevrolet Corvette C6.R GT2
Since B998 rF2 logs include "Category" string for every driver. This allows for better car selection in case of
mods like AMGT3, where Category allows to filter all cars independent of manufacturer.
r2la now creates car IDs from 4 tags (3 before) - Category, CarType, CarClass and TeamName. For most known mods best combinations will be preselected by default.
Car IDs are created for every Category+CarType combination.
r2la usually uses first value of the Category list, but for some mods I select other values, selection is hard-coded. For example, Palatov D4 selects second value - "D4" as Category.
Log files from old builds will have their Category=CarType.
- Offline challenges now check for Start Type match. Since B998 rF2 includes "FormationAndStart" in log files.
- Added "Private mode" for DEDI version. If activated it will require users to enter a password to see r2la DEDI pages. Qualy and Race Chat is visible only to admin in Private mode.
Added possibility to host Hotlap Competitions from r2la DEDI. Users can submit their times from thier r2la apps
to different r2la DEDI servers.
To transfer Competitions and their results when your upgrading r2la DEDI, go to Options page and Export hotlap competitions from old r2la DEDI instance to file r2la_competitions.json. Then copy this file to new r2la DEDI instance, go to Options page and Import it.
- "How to update.txt" file with instructions now included in archive
- Added "Auto refresh" mode for r2la DEDI. If turned on, it will attempt to refresh logs list on every call to Viewer or Records pages, but will only refresh if time passed after last refresh is more than "Auto refresh rate" (in minutes, configurable).
- Added "All time stats" to Championships. It can be time-consuming to calculate them for many championships, so in DEDI version this page is cached for 10 minutes (will not be re-calculated if it recieves more requests in this period).
- Added more race settings: long race name and race country. Press "Edit race" then "Edit more race settings" to set them. Long name is used for race select buttons if defined. Short race name will be used anywhere if long name is not defined, and only in tables if long name is defined. Country flag will be displayed in championship tables. You can add your flags if you need, their names are read only at the first start of clean r2la, put them in web2py\applications\r2la\static\images\flags folder before you start r2la for the first time. Flags are from gosquared. https://www.gosquared.com/resources/flag-icons/
- Now you can add background image for championship page and/or for championship top panel. To do this, put .jpg files into web2py/applications/r2la/static/images/championships/ folder. File name must be championship name, following this rules: - if championship name contains spaces, in file name you should replace them with underscore _ - for page background image file add _bg to file name - for top panel image file add _top to file name Example: MY_GT3_bg.jpg MY_GT3_top.jpg
- Driver swaps are now shown in "Session laps" table and swapped drivers names appear in "Session results" tables after main driver name.
- Added loading icon for r2la DEDI session reports and championship tables
- Added session filter for car-track combo log viewer page
- Logs with 0 laps or 0 drivers now have "trash" icon in log selector
- Logs with 0 drivers now don`t show an error
- Improved detection of logs with no lap time
- Fixed Compare Logs errors when searching through associated tracks
- Fixed a bug when track records were staying in DB after .xml files were deleted from results folder "by hand"
- r2la and r2la DEDI now have custom browser icons (blue one and red one). You might need to delete your browser cache and restart it to see them.
- Various other small fixes
- Added rFactor 1 support
- Implemented "All drivers recieve minimum points" option for Championships. All drivers with points less then minimum (even DNF, DNS, no points finish) will get this minimum points
- Manually corrected points in Driver Standings now marked with red dot
- Fixed a bug when championship assigned race reports become invisible after "Import championships" was used
- Added support for Qualify2, Qualify3
- Fixed errors in Race Stints view if driver had pitstops
- In Race Stints view added "Start", "Pit out" and "Refueling" badges to "Fuel spent" column
- Fixed calcultaion of added fuel for Race Pit Stops Summary if driver pits are before start/finish line
- Session date added to report title, after track name
- "Vehicle" column in Race/Session results table now shows car name according to identifier set at Track Records page, ignoring TeamName, because TeamName already displayed in next column. Basically, allowing you to choose to display CarType, CarClass or both
- "Check for new logs" button added to Championship page
- Fixed error when reading player.json with non UTF-8 characters
- Fixed wrong driver name abbreviation in driver stats championship table
- Fixed "Manage classes" button on "Championship mgr" index page
- Your current challenge position and latest uploaded result for challenge now visible at the Offline Challenges page
- Logs selected as results for championship races now labeled with championship name in log selector views. Hover mouse over label to see original file name.
- Added "Gap to fastest lap" to stint tables
- Fixed color coding for stint tables (was relative to overall best session time before, not best player`s session time)
- Added "Times sum" column to stints (initially hidden) and "Show times sum" button. Useful to compare stints with different lap numbers in them.
- Added Laps, Distance and Time stats to car-track combo view
- Added possibility to save user points presets
- manage your online or offline championships
- support for teams and classes
- teams can be automatically selected from CarType, CarClass, TeamName, VehName tags or created and assigned manually
- classes can be automatically selected from CarType, CarClass, TeamName tags or created and assigned manually
- support for drivers moving between teams and classes at different races during championship
- customizable points system for 50 places, plus bonuses for pole position, fastest lap, one lap led and max laps led
- points presets for all major racing series included
- driver statistics for championship
- car statistics selectable by CarType, CarClass, TeamName, VehName tags
- customizable minimum distance for classification, number of team cars that awarded points, number of worst driver results in championship that won`t be counted
- support for manual race points override, in case of penalties, disqualifications, custom bonuses, etc.
- export of championship tables to html
- transfer your championships between r2la versions by importing r2la_settings file
- if racing with AI, you have to ensure by yourself consistent driver names and performances at every race during championship
- do not delete .xml logs that you assigned as results for races in championship, they are accessed every time you browse championship
- "Refresh" button added to "Compare logs" view
- Moved "Options" button from "Track records" to Navbar
- Log will now be provided for cases when r2la could not find rFactor2 at entered path
- Hotlaps will now provide alert if user tries to submit times with older versions of r2la. To ensure everybody has the same Hotlaps track sets.
- Times set before last version of DW12 (1.63) was released, will not be submitted for Hotlaps. Same for future mods re-released with new upgraded physics.
- AtlantaMP added to Palatov D4 hotlaps
- Introduced Hotlaps
- Fixed error when opening archived challenge
- Added start and finish positions to challenge results
- Added support for cases when User Data was installed separately. Always enter your main rFactor2 path in r2la prompt. If your user data path is installed separately, it will be picked up automatically
- "Race fastest laps (by lap)" table now shows best times for all laps, with race best times highlighted in purple
- Added number of laps on which driver was fastest to "Race fastest laps (by driver)" table
- Fixed bug in "Session history" view, not all laps were shown previously
- Added stint average lap time, lap fuel consumption, stint average lap fuel consumption and estimated number of laps on full tank with this stint avg. lap fuel consumption to "Stints" view
- "Stints" view now also available for Race sessions
- Introduced track association import to transfer your track associations between r2la versions. Track associations now stored in r2la_settings.json file in rF2 Log Analyzer directory. You can copy this file from old r2la folder to new one and import from "Tracks options" page.
- Fixed error when disconnecting track associations
- "Possible time" added to Qual results, Race best laps and Session results tables
- Offline challenges
- Added track check when searching for Qual logs for selected Race session
- Added best sector times and possible time to "Compare all logs for this car and track" view
- Added best sector times and possible time view to "Results viewer" when selecting multiple logs
- Fixed error when merging records from identical tracks, if .xml of a "child" track was created later then .xml of a "parent" track
- More speed optimizations
- Fixed error if .xml has empty CarNumber tag
- Added "Please wait..." pop-ups where possible
- Added number of found log files near "Refresh" button
- Using fast lxml library for parsing now
- Added "Select multiple" button, to show checkboxes, select multiple logs and then delete them
- More fixes for faulty .xml files (empty "Lap" tags, invalid character`s, "junk" symbols at the end of the file)
- Track overall laps, distance, time stats added to track page
- User name at the "Best Sectors" pages now highlighted
- Optimizations to speed-up loading "Results viewer" page
- fix for FinishTime = -340282346638528860000000000000000000000.0000
- error messages that redirected to new page now appear in lower panel
- "Export report" button now works in Firefox
- Error messages now will be shown to user where possible
- Fixed errors in parser if chat had empty messages
- Empty Results folder now don`t produce an error
- Logs from other people`s sessions in which user did not participate now properly shown
- added separate view to compare all logs for selected car/track
- added PB (personal best) badge to indicate logs with record times
- pressing on record date/time on track records page now opens corresponding log in viewer
- pressing on track name in results viewer now opens records page for this track
This application is made with Python, web2py, lxml, psutil, UIkit, Flot.js, jQuery, marked, CodeMirror, Mithril, Moment.js, Moment Duration Format Plugin, Ocanvas, Background pattern from subtlepatterns.com. Flags from gosquared.
Copyright (c) 2004 Infrae. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Infrae nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
psutil is distributed under BSD license reproduced below. Copyright (c) 2009, Jay Loden, Dave Daeschler, Giampaolo Rodola' All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the psutil authors nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.