def _decode_thrift_annotations(self, thrift_annotations):
local_endpoint = None<EOL>kind = Kind.LOCAL<EOL>all_annotations = {}<EOL>timestamp = None<EOL>duration = None<EOL>for thrift_annotation in thrift_annotations:<EOL><INDENT>all_annotations[thrift_annotation.value] = thrift_annotation.timestamp<EOL>if thrift_annotation.host:<EOL><INDENT>local_endpoint = self._convert_from_thrift_endpoint(<EOL>thrift_annotation.host,<EOL>)<EOL><DEDENT><DEDENT>if '<STR_LIT>' in all_annotations and '<STR_LIT>' not in all_annotations:<EOL><INDENT>kind = Kind.CLIENT<EOL>timestamp = all_annotations['<STR_LIT>']<EOL>duration = all_annotations['<STR_LIT>'] - all_annotations['<STR_LIT>']<EOL><DEDENT>elif '<STR_LIT>' not in all_annotations and '<STR_LIT>' in all_annotations:<EOL><INDENT>kind = Kind.SERVER<EOL>timestamp = all_annotations['<STR_LIT>']<EOL>duration = all_annotations['<STR_LIT>'] - all_annotations['<STR_LIT>']<EOL><DEDENT>annotations = {<EOL>name: self.seconds(ts) for name, ts in all_annotations.items()<EOL>if name not in _DROP_ANNOTATIONS<EOL>}<EOL>return annotations, local_endpoint, kind, timestamp, duration<EOL>
Accepts a thrift annotation and converts it to a v1 annotation.

        :param thrift_annotations: list of thrift annotations.
        :type thrift_annotations: list of zipkin_core.Span.Annotation
        :returns: (annotations, local_endpoint, kind)