DIV ARENA FORUMS

reading and writing files

Casper - 6-1-2018 at 10:46 PM

Context: I'm writing a level editor for my game, I need to read and write some files.

Write:
Code:
function SaveObject(string fileName, a) private fileHandle; begin debug; // open file handle fileHandle = fopen(DATA_OBJECTS_PATH + fileName, "w"); // write object data fwrite(offset a, sizeof(a), fileHandle); // close file handle fclose(fileHandle); end


Read:
Code:
function LoadObject(string fileName) private fileHandle; a; begin debug; // open file handle fileHandle = fopen(DATA_OBJECTS_PATH + fileName, "r"); // read object data fread(offset a, sizeof(a), fileHandle); // close file handle fclose(fileHandle); end


I read through the old DIV documentation. As I understand it, this code should write an integer to the file, and read that same integer from the file. However, stepping through this code, the value of 'a' after fread() is some gigantic number:



The integer I pass to the SaveObject() function is 273, that is the expected value of 'a'.

Here are the contents of the written file:

Quote:

80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400  80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400 80 640 377 400


All that just to write a single integer!

Any clues? I'm struggling to debug this. It feels as though the DIV documentation is inaccurate...

CicTec - 7-1-2018 at 12:07 AM

Hi Casper,

Please try the following test:
Code:
program test_fopen; const DATA_OBJECTS_PATH = ""; global a; begin SaveObject("__test_fopen.dat", 273); LoadObject("__test_fopen.dat"); write_int(0, 160, 100, 4, &a); repeat frame; until(key(_esc)); end function SaveObject(string fileName, a) private fileHandle; begin // open file handle fileHandle = fopen(DATA_OBJECTS_PATH + fileName, "w"); // write object data fwrite(offset a, sizeof(a), fileHandle); // close file handle fclose(fileHandle); end function LoadObject(string fileName) private fileHandle; begin // open file handle fileHandle = fopen(DATA_OBJECTS_PATH + fileName, "r"); // read object data fread(offset a, sizeof(a), fileHandle); // close file handle fclose(fileHandle); end


Work as expected, at least on DIV build that i have on Linux 64 bit.

Casper - 7-1-2018 at 01:15 PM

Hey CicTec, thanks for writing that! I should have done it myself, as it's more useful to test with. I tested with this:

Code:
program test_fopen; const DATA_OBJECTS_PATH = "assets/"; global a; b; begin debug; SaveObject("__test_fopen.dat", 273); LoadObject("__test_fopen.dat"); write_int(0, 160, 100, 4, &b); repeat frame; until(key(_esc)); end function SaveObject(string fileName, a) private fileHandle; begin // open file handle fileHandle = fopen(DATA_OBJECTS_PATH + fileName, "w"); // write object data fwrite(offset a, sizeof(a), fileHandle); // close file handle fclose(fileHandle); end function LoadObject(string fileName) private fileHandle; begin // open file handle fileHandle = fopen(DATA_OBJECTS_PATH + fileName, "r"); // read object data fread(offset b, sizeof(b), fileHandle); // close file handle fclose(fileHandle); end


The first time I ran it and stepped through, this is the value I got for 'b':


After running a few times with minor edits, I saw '273' and I realized what's happening. I'm inspecting the value of the written file while running the DIV program. When there is an open file handle and another program accesses the same file, it appears to corrupt it. If I don't inspect the file while handling the file it works as expected :)


[Edited on 2018-1-7 by Casper]

Casper - 7-1-2018 at 01:22 PM

edit: Nevermind. I'm going crazy. There are probably some unintuitive things going on with the DIV compile/run loop that are giving my debugging skills a run for their money.

[Edited on 2018-1-7 by Casper]

CicTec - 7-1-2018 at 02:07 PM

Hi Casper,

I'm happy that the example helped you find the problem.
Yes, files should only be opened by one program at a time, in fact, many advanced editors recommend closing all programs that can access / use the files before modifying them, to avoid data loss or corruption.

Quote: Originally posted by Casper  
edit: Nevermind. I'm going crazy. There are probably some unintuitive things going on with the DIV compile/run loop that are giving my debugging skills a run for their money.

What do you mean exactly, do you have problems using the debugger, or does this present any possible bugs?

Casper - 8-1-2018 at 10:43 AM

Well, I stopped opening/viewing the .dat file while stepping through with the debugger. After that, it appeared that the issue (crazy large integers in debugger, and corrupted files) went away. Now in order to validate my assumptions I wish to force the same error to occur again... Unfortunately, I can't reproduce it even though I'm doing the same things: 1) step through and observe the values while the file handle is open, and 2) open/view the file while the file handle is open. So now I'm doubting my own conclusions. I don't understand what caused the error, so I can't prevent myself from making it again.

edit: Again, nevermind. I tried again now and was able to replicate it three times. Stepping through after fopen(), I open the file in notepad (also a few times with vim), and see the whole mess of integers there. Once that's happened it will save the corrupt file and reading it will give the wrong result. I'm not (totally) insane :)

[Edited on 2018-1-8 by Casper]

CicTec - 8-1-2018 at 01:38 PM

Yes, you must keep in mind that opening a file in read only should not cause problems, the problem is that some editors automatically save the file open after a certain period of time, and if you have made changes without saving you then find yourself with the changes file and possible data corruption, if this is simultaneously open in another program for reading / writing, so not to go crazy, open the file with only one editor at a time. :)