def generate_blob(self, gso_table):
<EOL>bio = BytesIO()<EOL>gso = bytes('<STR_LIT>', '<STR_LIT:ascii>')<EOL>gso_type = struct.pack(self._byteorder + '<STR_LIT:B>', <NUM_LIT>)<EOL>null = struct.pack(self._byteorder + '<STR_LIT:B>', <NUM_LIT:0>)<EOL>v_type = self._byteorder + self._gso_v_type<EOL>o_type = self._byteorder + self._gso_o_type<EOL>len_type = self._byteorder + '<STR_LIT:I>'<EOL>for strl, vo in gso_table.items():<EOL><INDENT>if vo == (<NUM_LIT:0>, <NUM_LIT:0>):<EOL><INDENT>continue<EOL><DEDENT>v, o = vo<EOL>bio.write(gso)<EOL>bio.write(struct.pack(v_type, v))<EOL>bio.write(struct.pack(o_type, o))<EOL>bio.write(gso_type)<EOL>utf8_string = bytes(strl, '<STR_LIT:utf-8>')<EOL>bio.write(struct.pack(len_type, len(utf8_string) + <NUM_LIT:1>))<EOL>bio.write(utf8_string)<EOL>bio.write(null)<EOL><DEDENT>bio.seek(<NUM_LIT:0>)<EOL>return bio.read()<EOL>
Generates the binary blob of GSOs that is written to the dta file.

Parameters
----------
gso_table : OrderedDict
    Ordered dictionary (str, vo)

Returns
-------
gso : bytes
    Binary content of dta file to be placed between strl tags

Notes
-----
Output format depends on dta version.  117 uses two uint32s to
express v and o while 118+ uses a uint32 for v and a uint64 for o.